구현 목표 : 버튼을 누를 때마다 랜덤한 명언을 보여준다.
iOS개발 지식 알아보고 구현하기
UIKit, UIViewController, AutoLayout, IBOulet & IBAction
UIKit
Cocoa touch Framework : iOS개발환경을 구축하기 위한 최상위 프레임워크로 그 중 가장 많이 사용되는 것은 UIKit와 Foundation
Foundation : 기본적인 데이터타입부터 자료구조, 각종 구조체, 타이머, 네트워크통신, 파일관리등 기본적인 프로그램의 중심을 담당
UIKit : 사용자의 인터페이스를 관리하고 이벤트를 처리하는 프레임워크
- 인터페이스 : 테이블뷰, 슬라이더, 버튼, 텍스트필드, 알럿창 등
- 이벤트 : 제스쳐, 애니메이션, 그림그리기, 이미지처리, 텍스트처리 등
UIKit 앱의 구조는 기본적으로 MVC디자인 패턴을 사용
MVC디자인 패턴
- Model : 앱의 데이터와 비즈니스로직
- View : 사용자에게 데이터를 보여주는 UI를 담당
- Controller : Model과 View의 중간다리 역할
- View로부터 사용자 액션을 전달받아서 모델에게 어떤 작업을 해야하는지 알려준다.
- 모델의 데이터변화를 뷰에게 전달하여 뷰를 어떻게 업데이트할지 알려준다.
View와 Model의 상호 의존성을 없애고 Controller가 Model과 View의 중간다리역할을하는것이 이상적인 MVC패턴
현실의 UIKit구조
- View와 Controller가 강하게 연결되어있어 View와 Controller가 거의 모든 기능을 담당한다.
- Controller가 View의 라이프사이클을 관여하기 때문에 View와 컨트롤러를 분리하기는 어렵다.
- 프로젝트 규모가 커질수록 Controller가 비대해지고 내부 구조가 복잡하게 되어 유지보수가 힘들어지는 상황이 발생한다.
이러한 이유 때문에 어느정도 이상의 큰프로젝트들은 다양한 디자인패턴들로 MVC의 단점을 해결하려 한다.
UIViewController
UIView : 화면의 직사각형 영역에 대한 내용을 관리하는 개체
UIViewController : 앱의 근간을 이루는 객체로 모든 앱은 최소한 하나 이상의 뷰컨트롤러를 가지고 있다.
- 데이터 변화에 따라서 view컨텐츠를 업데이트
- view들과 함께 사용자 상호작용에 응답
- view를 리사이징하고 전체적인 인터페이스의 레이아웃관리
- 다른 뷰컨트롤러들과 함께 앱을 구성
AutoLayout
AutoLayOut : 제약조건을 이용해서 뷰의 크기와 위치를 지정하는 것으로 아이폰의 다양한 해상도에 대응하기 위한 기능
IBOutlet&IBActions
IBOutlet : 스토리보드에 등록한 UIObject를 코드에 변수로 접근 할 수 있게 한다.
IBActions : 버튼과 연동해 이벤트를 처리하는 함수를 생성 할 수 있게 한다.
Content Hugging&Compression Resistance
UILavel과 UIButton 등 텍스트, 이미지에 따라 크기가 결정되는 View들이 다른 View들 간에 걸린 제약에 의해 본래의 컨텐츠 고유 사이즈보다 늘어나거나 줄어드는데 이를 조정하기위해 사용되는 도구들이 있다.
- Content Hugging : 늘어나는것에 대해 저항하는 제약으로 우선순위가 높을 수록 크기를 유지하고 낮으면 크기가 늘어난다.
- Compression Resistance : 줄어드는것에 대해 저항하는 제약으로우선순위가 높으면 자신의 크기를 유지하고 낮으면 크기가 줄어든다.
어플리케이션 구현
글의 모든 내용은 패스트캠퍼스 강의를 시청하고 작성한 내용입니다.
End