아요 개발 일기
[iOS] UIKit 본문
안녕하세요 :D
오늘은 개발을 시작할 때 처음 마주하게되는 프레임 워크인 UIKit에 대해서 알아보도록 하겠습니다!
Xcode로 프로젝트를 만들면 자동을 UIKit이 포함되어있는 것을 볼 수 있죠??
근데 iOS 공부를 하면서 UIKit에 대해서는 아주 간단하게만 설명하거나, 넘어가는 경우가 많아서 정리하게 됐습니다 :)
기본으로 들어가 있는거면 분명 중요한거겠죠!U
함께 알아봅시다 고고고
UIKit이 대체 뭐야 ? 🤔
UIKit은 Framework로 iOS 또는 tvOS 애플리케이션의 사용자 인터페이스를 구현하고 이벤트를 관리합니다.
즉, UIKit은 빌드하는데 필요한 핵심 개체를 제공하며 이 개체를 이용하여 콘텐츠를 화면에 표시하고 해당 콘텐츠와의 상호 작용을 관리합니다.
앱은 기본 동작을 위해 UIKit에 의존하며
UIKit은 특정 요구 사항에 맞게 해당 동작을 사용자 지정할 수 있는 다양한 방법을 제공
- 제스처 처리, 애니메이션, 그림 그리기, 이미지 처리, 텍스트 처리 등 사용자 이벤트 처리를 위한 클래스를 포함
- 테이블 뷰, 슬라이더, 버튼, 텍스트 필드, 얼럿 창 등 애플리케이션의 화면을 구성하는 요소를 포함
Framwork를 모르시는 분들은 Framework와 Library 글을 먼저 보고오시면 좋습니다!
UIKit 앱의 코드 구조
UIKit은 시스템과 상호작용하고, 앱의 메인 이벤트 루프를 실행하며 화면에 콘텐츠를 표시하는 것 이외에도 앱의 많은 핵심 객체를 제공합니다.
이러한 객체의 대부분은 있는 그대로 사용하거나 약간 수정하여 사용하며, 이때 수정할 객체와 객체 수정 시기를 아는 것이 앱을 구현하는데 중요합니다.
UIKit앱의 구조는 MVC(Model-View-Controller) 디자인 패턴을 기반으로하며 개체는 목적에 따라 구분됩니다.
- Model Object는 앱의 데이터 및 비지니스 로직을 관리
- View Object는 데이터의 시각적 표현을 제공
- Controlle Object는 Model과 View 객체 사이의 다리 역할을하며, 적절한 시점에 Model간에 데이터를 이동
아래 그림은 일반적인 UIKit 앱의 구조입니다.
UIKit은 필요에 따라 데이터에 대한 custom views를 정의도 할 수 있지만, 대부분은 view objects를 제공합니다.
- UIKit 및 Foundation framework는 앱의 Model Object를 정의할 때 사용하는 많은 기본 유형을 제공합니다.
- UIKit은 UIDocument 디스트 기반 파일에 속하는 데이터 구조를 구성하기 위한 개체를 제공 합니다.
- Foundation framework는 문자열, 숫자, 배열 및 기타 데이터 유형을 나타내는 기본 개체를 정의합니다.
- 스위프트 표준 라이브러리는 재단 프레임 워크에서 사용할 수 있는 동일한 유형을 많이 제공합니다.
UIKit은 컨트롤러에 있는 대부분의 개체와 앱의 View layer를 제공합니다.
특히 UIKit UIView는 일반적으로 콘텐츠를 화면에 표시하는 클래스를 정의합니다.
(Metal 및 기타 시스템 프레임 워크를 사용하여 콘텐츠를 화면에 직접 렌더링 할 수도 있습니다.)
이 UIApplication개체는 앱의 기본 이벤트 루프를 실행하고 앱의 전체 수명주기를 관리합니다.
UIKit 기능별 요소
사용자 인터페이스
- View and Control : 화면에 콘텐츠 표시
- View Controller : 사용자 인터페이스 관리
- Animation and Haptics : 애니메이션과 햅틱을 통한 피드백 제공
- Window and Screen : 뷰 계층을 위한 윈도우 제공
사용자 액션
- Touch, Press, Geesture: 제스처 인식기를 통한 이벤트 처리 로직
- Drag and Drop: 화면 위에서 드래그 앤 드롭 기능
- Peek and Pop: 3D 터치에 대응한 미리 보기 기능
- Keyboard and Menu: 키보드 입력을 처리 및 사용자 정의 메뉴 표시
'iOS' 카테고리의 다른 글
[iOS] ViewController Life - cycle (생명주기) (0) | 2023.01.02 |
---|---|
[iOS] Apple's MVC 패턴 (0) | 2023.01.02 |
[iOS] 동기(Sync) / 비동기(Async) (0) | 2023.01.02 |
[iOS] 프로그래밍 디자인 패턴 (0) | 2022.12.30 |
[iOS] 메모리 구조 (0) | 2022.12.30 |