1. UIKit 소개
오늘 iOS 앱 개발의 근간이 되는 UIKit에 대해 공부했다. UIKit은 Apple이 제공하는 iOS용 사용자 인터페이스 프레임워크로, 앱의 핵심 인프라와 사용자 상호작용에 필요한 기능을 제공한다.
1.1 UIKit의 정의
- iOS, tvOS, iPadOS 앱 개발을 위한 그래픽, 이벤트 기반 사용자 인터페이스 프레임워크
- Objective-C로 작성되었지만 Swift와 완벽하게 호환됨
1.2 UIKit의 역할
- 사용자 인터페이스 구성요소 제공
- 이벤트 처리 메커니즘 제공
- 앱 구조와 리소스 관리 지원
2. UIKit의 주요 구성요소
2.1 UI 요소
- UIButton, UILabel, UITextField, UIImageView 등 기본적인 UI 컴포넌트 제공
- UITableView, UICollectionView 같은 데이터 표시용 복잡한 뷰도 포함
- UIAlertController를 통한 알림 및 액션 시트 구현 가능
2.2 뷰 컨트롤러
- UIViewController: 화면의 콘텐츠를 관리하는 객체
- 화면 전환 및 뷰 계층 구조 관리
- 생명주기 메서드를 통한 화면 상태 관리 (viewDidLoad, viewWillAppear 등)
2.3 내비게이션 및 탭 바
- UINavigationController: 계층적 콘텐츠 탐색을 위한 스택 기반 스키마 제공
- UITabBarController: 여러 하위 작업 또는 뷰 간의 전환을 위한 인터페이스 제공
2.4 테이블 및 컬렉션 뷰
- UITableView: 단일 열의 행으로 데이터 표시
- UICollectionView: 사용자 정의 가능한 레이아웃으로 데이터 표시
2.5 컨트롤 및 바
- UIControl: 버튼, 슬라이더, 스위치 등의 기본 클래스
- UIToolbar, UISearchBar 등 특수 목적의 바 제공
3. UIKit의 핵심 개념
3.1 델리게이트 패턴
- 객체 간의 통신을 위한 디자인 패턴
- 예: UITableViewDelegate, UITextFieldDelegate
3.2 데이터 소스
- 데이터 모델과 뷰 사이의 중재자 역할
- 예: UITableViewDataSource, UICollectionViewDataSource
3.3 타겟-액션 메커니즘
- 컨트롤의 이벤트를 처리하는 방식
- addTarget(_:action:for:) 메서드를 통해 구현
3.4 Auto Layout
- 제약 조건 기반의 레이아웃 시스템
- 다양한 화면 크기와 방향에 대응하는 유연한 UI 설계 가능
4. UIKit의 주요 기능
4.1 애니메이션 및 햅틱 피드백
- UIView.animate(withDuration:animations:) 등을 통한 애니메이션 구현
- UIFeedbackGenerator를 이용한 햅틱 피드백 제공
4.2 제스처 인식
- UIGestureRecognizer 서브클래스를 통한 다양한 제스처 처리
- 탭, 스와이프, 핀치, 회전 등의 제스처 지원
4.3 드래그 앤 드롭
- UIDragInteraction과 UIDropInteraction을 통한 드래그 앤 드롭 기능 구현
4.4 접근성
- UIAccessibility 프로토콜을 통한 접근성 기능 구현
- VoiceOver, 동적 타입 등 다양한 접근성 기능 지원
5. UIKit 사용 시 주의사항
- 메인 스레드에서 UI 업데이트 수행
- 메모리 관리에 주의 (특히 순환 참조 방지)
- 대규모 데이터 처리 시 성능 최적화 필요
- iOS 버전별 API 변경사항 숙지
6. 마무리
UIKit은 iOS 앱 개발의 기초이자 핵심이다. 오늘 공부를 통해 UIKit의 전반적인 구조와 주요 컴포넌트, 그리고 핵심 개념들을 이해할 수 있었다. 앞으로 실제 프로젝트에 UIKit을 적용하면서 더 깊이 있는 학습을 진행할 예정이다. 특히 Auto Layout, 테이블