- iOS 앱을 만들고, User Interface를 구성하는 데 필수적인 프레임워크 이름은 무엇인가?
- UIKit 입니다.
가장 많이 사용하는 프레임워크, UIKit의 구체적인 역할에 대해 알아봅시다!
Construct and manage a graphical, event-driven user interface for your iOS or tvOS app.
(Swift 공식문서 참조)
iOS앱 또는 tvOS앱에 과한 그래픽적인 부분, 이벤트 기반 UI를 구성하고 관리합니다.
이제 ARM을 장착한 맥북이 나오므로.. iPad, iPhone, MAC 에서 동시에 빌드가 되는 시대가 오겠죠?
그때의 역할에서의 UIKit이 어떨지도 생각해보면 좋을 것 같습니다. (다음의 포스팅 주제..? ㅎ)
UIKit framework가 제공하는 인프라
- 인터페이스 구현을 위한 Window 그리고 View Architecture를 제공합니다.
- Multi-Touch 및 다른 유형의 입력을 앱에 전달하기 위한 이벤트 핸들링(Input 요소)
- 사용자, 시스템 및 앱 간의 상호 작용을 관리하는 데 필요한 기본 실행 루프를 제공합니다.
- 이외에도 .. 애니메이션 지원, 문서 지원, 그리기 및 인쇄지원
- 현재장치에 대한 정보, 텍스트 관리 및 표시, 검색 지원, 접근성 지원, 앱 확장(extension) 지원, 리소스 관리
중요) UIKit 클래스는 오직 앱의 메인 스레드 또는 Main dispatch queue에서 작동되어야 합니다. 이러한 제한은 UIResponder에서 파생되거나, 당신의 앱 UI를 조작하는 것과 관련됩니다.
- 실제프로젝트에서 UIKit관련한 코드를 메인스레드에서 작동하지 않으면, 동기 비동기 문제가 일어나며
- 보여져야 할것이 보여지지 않고, 애니메이션 등 이 이러한 문제로 인해 작동되지 않을 수 있습니다.
UIKit communicates details about the current environment using trait collections, which reflect a combination of device settings, interface settings, and user preferences. For example, you use traits to detect whether Dark Mode is active for the current view or view controller. Consult the current trait collection of your UIView or UIViewController object when you want to customize its contents based on the current environment. Adopt the UITraitEnvironment protocol in other objects when you want them to receive trait notification changes.
UIKit 그리고 기본적인 MVC 구조
UIKit 및 Foundation 프레임 워크는 앱의 모델 객체를 정의하는 데 사용하는 많은 기본 유형을 제공합니다. UIKit은 디스크 기반 파일에 속하는 데이터 구조를 구성하기위한 UIDocument 개체를 제공합니다. Foundation 프레임 워크는 문자열, 숫자, 배열 및 기타 데이터 유형을 나타내는 기본 개체를 정의합니다. Swift Standard Library는 Foundation 프레임 워크에서 사용할 수있는 동일한 유형을 많이 제공합니다.
UIKit은 컨트롤러에있는 대부분의 개체와 앱의보기 레이어를 제공합니다. 특히 UIKit은 일반적으로 콘텐츠를 화면에 표시하는 UIView 클래스를 정의합니다. (Metal 및 기타 시스템 프레임 워크를 사용하여 콘텐츠를 화면에 직접 렌더링 할 수도 있습니다.) UIApplication 객체는 앱의 기본 이벤트 루프를 실행하고 앱의 전체 수명주기를 관리합니다.
'Deep Dive iOS' 카테고리의 다른 글
UIView? Custom View? (0) | 2020.11.12 |
---|---|
앱이 inactive 상태가 되는 경우 (0) | 2020.11.11 |
시뮬레이터에서 할 수 없는 것과 실제 iPhone과의 차이 (0) | 2020.11.05 |
앱의 상태 및 수명주기에 관련한 메소드 (0) | 2020.11.05 |
frame and bounds (0) | 2020.11.05 |