[IOS,Swift] Cocoa Touch Framework 이해

## Cocoa Touch Framework

 

개발환경, 애플리케이션의 다양한 기능 구현에 필요한 여러 개발 도구를 포함하는 

최상위 레벨의 프레임 워크

 

-> Shared Library(or API)와 비슷한 개념, 어떤 기능에 관련된 함수를 모아둠

 

 

 

1. UIKit - IOS의 UI 담당

-> MVC 패턴 사용 (Model : 무엇을, Controller : 어떻게, View : 보여줌 )

-> 사용자 인터페이스를 관리하고, 이벤트를 처리하는 프레임워크

 

2. Foundation - 프로그램의 중심을 담당

-> Application의 모든 object를 관리하는 기본적인 틀 제공

-> 메모리 할당 혹은 반환하는 기본적인 규칙 정의

-> 리스트나 딕셔너리와 같은 클래스들은 모두 "NS"로 시작

 

(!) Foundation이 샤옹하는 CoreFoundation은 "CF"

    -> GUI와 관련된 Foundation (원시 바이트, 유니코드, 숫자, 달력 날짜, 배열, 사전, 딕셔너리 등 )

 

3. CoreData 

-> 응용프로그램에서 모델 계층 개체를 관리하는 데 사용하는 Framework

-> 지속성을 포함하여 객체 수명주기 및 객체 그래프 관리와 관련된 일반작업에 일반화되고

   자동화 된 솔루션 제공

-> 구현, 테스트 또는 최적화 할 필요 없는 기본 제공 기능 (코드 양 감소)

 

4. MapKit - 앱의 인터페이스에 직접 지도 or 위성이미지 표시

-> 관심있는 장소를 호출하며 지도좌표에 대한 장소 표시 정보를 결정할 수 있는 도구모음

 

5. Core Animation - 그래픽 렌더링으로 영상 제작 

-> 애니메이션의 각 프레임을 그리는 데 필요한 대부분의 작업을 자동 수행 

 

### UIView : 화면의 직사각형 영역에 대한 내용을 관리하는 개체

-> 화면을 구성하는 기본 베이스 

-> 여러 UI Componet에게 상속을 지원함

 

### ViewController : 앱의 근간을 이루는 객체

-> 전체적인 인터페이스의 레이아웃을 관리, 다른 뷰 컨트롤러와 앱을 구성 

-> 화면 하나를 관리하는 단위

-> 모든 앱은 최소한 하나 이상의 뷰 컨트롤러를 가지고 있다.

 

[ 뷰 컨트롤러 역할 ]

1. 데이터 변화에 따라서 view 컨텐츠 업데이트

2. view들과 함께 사용자 상호작용에 응답

3. view를 리사이징하고 전체적인 인터페이스의 레이아웃을 관리

4. 다른 뷰 컨트롤러 들과 함께 앱 구성

 

### AutoLayout : 제약 조건을 이용해서 뷰의 위치를 지정하는 것

-> 해상도에 맞게 일정한 뷰 설정 가능 

 

### StoryBoard : 사용자 인터페이스를 시각적으로 표션

-> 컨텐츠 화면 간의 연결을 보여주는 도구

-> 씬으로 구성되며, 각 씬은 view Controller와 view를 나타냄

-> 오른쪽 하단을 통해서 제약조건 설정 가능 

 

[ 제약 조건 ]

 

1. Add New Constraint : 뷰의 너비와 높이 등의 다양한 제약조건 설정 

2. Align : 뷰 간의 정렬을 설정할 수 있는 메뉴

3. Resolve Auto Layout Issues : 오토 레이아웃 관련 이슈 해결

-> 뷰를 업데이트, 뷰의 현재 위치로 제약을 업데이트, 누락 된 제약 추가,제약 삭제 등의 기능

 

### IBOutlet & IBAction

 

1. IBOutlet : 스토리 보드에 등록한 UI Object를 코드의 변수로 접근 가능하게 함 

2. IBAction : 버튼과 연결하여 이벤트를 처리하는 함수 등을 관리

 

### Content Hugging & Compression Resistance

 

-> UI 속성들이 텍스트나 이미지에 따라 크기가 결정되는 뷰들이 있음

-> 이러한 뷰들이 다른 뷰들과의 거리 제약으로 본래의 사이즈보다 더 늘어나거나 줄어듬

 

1. Content Hugging : 더 늘어나는 것에 대한 제약

-> 우선순위가 높을수록 크기를 유지, 우선순위가 낮을수록 크기가 늘어남  

2. Compression Resistance : 더 줄어드는 것에 대한 제약

-> 우선순위가 높으면 자신의 크기 유지, 우선순위가 낮으면 크기가 줄어듬