Ch 01. 명언 생성기 앱 만들기
기능 상세:
버튼을 누를 때마다 랜덤 한 명언이 생성
활용 기술:
- Stroyboard
- AutoLayout
- UILabel
- UIButton
Cocoa touch Framework
- iOS 개발환경을 구축하기 위한 최상의 framework
- 대부분의 클래스 객체를 포함(UIKit, Foundation)
iOS UI(User Interface)
- UIKit: UI가 붙는 클래스들을 사용하기 위해 import
- 사용자 인터페이스 관리
- 이벤트 처리(제스처처리, 애니메이션, 그림그리기, 이미지처리, 텍스트처리)
- 어플리케이션에 화면을 구성(테이블뷰, 슬라이더, 버튼, 텍스트필드, 알럿창)
- UIKit의 구조: MVC(Model, View, Controller) 디자인패턴을 사용
- Model: 앱의 데이터와 비지니스 로직(무엇을)
- View: 사용자에게 데이터를 보여주는 UI(보여줄것인가)
- Controller: 모델과 View의 중간다리 역할(어떻게)
- 현실 MVC: viewController의 비중상승 -> 내부구조 복잡, 유지보수 힘듬 -> MVVM, 바이퍼 패턴 등장
- UIViewController
- 사용자가 화면을 보는 것에 대한 관리기능
- 최소 하나 이상의 viewController를 지님
- 역할
- 데이터 변화에 따라 view contents 업데이트
- view와 같이 사용자 상호작용에 응답
- view를 resizing, 전체적인 인터페이스의 레이아웃 관리
- 다른 뷰 컨트롤러와 함께 앱을 구성
- UIView: 화면을 구성하는 요소의 기본 클래스
(위치, 크기를 갖는 사각형, 배경색, 문자나 이미지 등으 컨텐츠를 가짐)
- AutoLayout
- 제약 조건을 이용하여 뷰의 크기와 위치 지정
- IPhone의 다양한 해상도 비율에 대응, 가로, 세로보기 응용
- iOS에서 AutoLayout을 이용한 화면구성은 Storyboard를 사용
- iOS앱에 사용자 인터페이스를 시각적으로 표현
- 컨텐츠 화면과 화면간의 연결을 보여주는 도구
- 제약조건
- Add New Constraint: Top, Trailing(오른쪽), Bottom, Leading(왼쪽), 높이, 너비 제약조건 설정
- Align: 가로, 세로정렬 제약조건 설정
- Resolve Auto Layout Issues: AutoLayout 관련된 이슈들을 해결하는 옵션 제공
- IBOutlet & IBAction
- 코드에서 UI로 접근
- Outlet 변수: 스토리보드에 등록한 UI Object에 접근하여 컨트롤하기 위해 변수에 바인딩
- Type: 메모리 회수 정책을 나타내는 키워드
- strong: 다른 곳에서 참조하고 있을 경우에 메모리에서 제거되지 않음, 메모리 누수 발생 가능
- weak: 다른 곳에서 참조하고 있더라도 시스템이 임의적으로 메모리에서 제거가능
- Type: 메모리 회수 정책을 나타내는 키워드
- Action 함수: 동작을 정의하는 함수
에러:
Set vertical hugging priority to 252
Set vertical compression resistance priority to 749
-
- content hugging
- 다른 뷰들과 걸린 제약에 의해 본래의 컨텐츠 고유 사이즈보다 늘어나는 거에 대한 저항
- content hugging
-
- content compression resistance
- 다른 뷰들과 걸린 제약에 의해 본래의 컨텐츠 고유 사이즈보다 줄어드는 거에 대한 저항
- content compression resistance
- 우선순위에 따라 컨텐츠 고유 사이즈보다 더 늘어나게 되었을 때 사이즈를 늘릴 건지 줄일 건지 정할 수 있다.
- 우선순위가 높으면 크기 유지 낮으면 크기가 변함
- 1~1000(1000: required, 750: high, 500: midium, 250: low)