-
iOS - UIKit 프레임워크와 UIKit AppProgramming/iOS 2021. 9. 4. 17:58
안녕하세요 BeePeach입니다:)
오늘은 UIKit 프레임워크에 대해서 공부해보려고 합니다.
iOS 앱 개발을 할 때 UIViewController, UIView... 대부분 화면을 구성하는 클래스 앞에는 UI가 들어갑니다.
그리고 이 클래스들을 사용하려면 꼭 UIKit 프레임워크가 import 돼있어야 합니다.
그럼 이렇게 중요한 UIKit이란 무엇인지 같이 공부해보도록 해요!
UIKit이란 뭘까??
UIKit은 iOS 앱에서 Graphical하고 event-driven UI를 관리하고 구성하는 iOS의 기반이 되는 프레임워크입니다.
인터페이스를 구현하기 위한 window와 view 구조를 제공합니다.
그리고 Multi-touch, 여러 종류의 input과 같은 event handling 인프라를 제공하고
User, System, App 간의 상호작용을 관리하기 위한 main run loop를 제공합니다.
쉽게 말해 화면을 표시하고 화면 터치와 같은 이벤트, 즉 UI를 구현하기 위해서 사용하는 프레임워크라고 할 수 있습니다.
Contents를 화면에 표시하거나 상호작용할 때 또는 system과 상호작용 하기 위해서 UIKit이 제공하는 object을 사용합니다.
앱의 기본적인 동작은 UIKit에 의존하고 UIKit은 사용자의 요구의 맞는 동작을 커스터마이징하는 다양한 방식을 제공합니다.
또한 수많은 다른 기능들도 제공합니다.
- animation
- document
- drawing and printing
- 현재 디바이스에 대한 정보
- text 관리 및 출력
- 검색
- accessibility
- app extension
- 리스소 관리
특별한 일이 없다면 UIKit 클래스들은 main thread 또는 main dispatch queue에서만 사용해야 합니다.
특히 UIResponder 클래스를 상속한 클래스 혹은 앱의 UI를 다룰 때 꼭 주의해야 합니다.
UIKit을 이용하여 앱 개발하기
Xcode로 새로운 project를 생성하면 최소한의 user interface를 제공하는 project가 생성됩니다.
그렇기 때문에 실행 및 빌드를 바로 할 수 있고 이를 디바이스나 시뮬레이터에서 바로 확인할 수 있습니다.
app을 빌드할 때 Xcode는 소스파일을 컴파일하고 project에 대한 app bundle을 생성합니다.
app bundle은 앱과 관련된 코드와 리소스를 포함한 directory로 구성되어있습니다.
리소스는 image asset, storyboard file, strings file, app metadata를 포함하고 있습니다.
모든 UIKit app은 2가지 리소스를 가지고 있어야 합니다.
- App icon
- Launch screen
App icon은 홈 화면에 표시되는 아이콘입니다.
아이콘은 사용자가 확실하게 다른 앱과 구별할 수 있도록 설정하는 게 좋습니다.
그리고 여러 가지 사용 환경에 맞춰서 다양한 image size를 반드시 제공해야 합니다.
LauchScreen.storyboard 파일은 앱의 초기 UI를 포함합니다.
유저가 앱을 클릭했을 때 system은 launch screen을 화면에 표시합니다.
그리고 앱이 준비가 되면 system은 launch screen을 숨기고 실제 UI를 표시합니다.
Info.plist - 필수적인 App Metadata
System은 앱의 configuration과 capabilities에 대한 정보를 app bundle에 있는 Info.plist 파일에서 가져옵니다.
Info.plist는 새 프로젝트를 생성하면 기본적으로 제공이 됩니다. 하지만 앱의 설정을 바꿔야 한다면 이 파일을 수정해야 할 수도 있습니다.
예를 들어서 앱이 특정한 하드웨어가 필요하던가 어떤 시스템 프레임워크 사용해야 한다면 이 기능과 관련된 정보를 Info.plist 파일에 추가해야 할 수도 있습니다.
조금 더 자세히 설명을 해본다면 실시간 방향을 알려주는 내비게이션 앱을 사용하기 위해서는 디바이스에 GPS 하드웨어가 포함되어 있어야 합니다.
만약 하드웨어가 없다면 해당 디바이스에서는 이 기능을 사용할 수 없겠죠??
그래서 이러한 정보를 Info.plist 파일에 저장한다면 App Store에서는 GPS 하드웨어를 제공하지 않는 디바이스는 이 앱을 다운 받을수 없도록 합니다.
UIKit App의 코드 구조
UIKit은 system과의 상호작용, main event loop의 실행, 화면에 content 표시등 app에서 중요한 object들을 제공합니다.
우리가 앱을 개발할 땐 제공되는 object들을 있는 그대로 사용하거나 약간 수정하여 사용하게 됩니다.
어떤 object를 수정해야 하고 언제 수정해야 하는지를 아는 것은 앱을 구현하는데 매우 중요합니다.
UIKit app의 구조는 MVC 디자인 패턴으로 구현되어 있습니다. (MVC는 Model-View-Controller의 줄임말입니다.)
MVC 디자인 패턴은 object의 목적에 따라 각각 나눠져 있습니다.
Model object는 앱의 data와 business logic을 관리합니다.
View object는 data의 시각적인 표현을 제공합니다.
Controller object는 model과 view object의 브릿지 역할을 합니다. 대표적인 역할로 둘 사이의 data 이동을 관리합니다.
UIKit, Foundation, Swift Standard Library
기본적으로 프로젝트를 생성하면 UIKit이 import 된 것을 확인할 수 있습니다.
그리고 UIKit을 import하면 자동으로 Foundation 프레임워크가 import됩니다.
Foundation을 import하면 Swift Standard Library프레임워크가 import됩니다.
다시 말해 UIKit만 import하면 Foundation StatndardLibrary는 import를 하지 않아도 됩니다.
UIKit과 Foundation 프레임워크는 위에 설명한 model object를 구현할 때 사용하는 기본적인 type을 제공합니다.
예를 들어 UIKit은 disk-based file에 속하는 데이터 구조를 구현하기 위한 UIDocument object를 제공합니다.
여기에 더해 UIKit은 controller와 view layer에 관련된 object도 제공합니다.
예를 들어 화면에 contents를 표시할 때 사용하는 UIView class와 앱의 main event loop를 실행하고 app의 life cycle을 관리하는 UIApplication class도 UIKit 프레임워크가 제공합니다.
Foundation은 string, number, array와 같은 기본적인 데이터 구조를 제공합니다.
Swift Standard Library는 Foundation이 제공하는 몇몇 type을 그대로 제공합니다.
물론 이 두 프레임워크가 이런 기본적인 데이터 구조만 제공하는 건 아닙니다.
이 포스팅에 두 프레임워크가 각각 제공하는 기능들과 차이에 대해서 설명하려 했지만...
너무 길어져서 다음에 따로 포스팅하도록 하겠습니다!
참고자료
About App Development with UIKit
728x90'Programming > iOS' 카테고리의 다른 글
iOS - Storyboard에서 만든 VC를 코드로 접근하는 방법 (0) 2022.01.25 iOS - Storyboard file 추가하는 방법 (0) 2021.12.15 iOS - Storyboard 살펴보기 (0) 2021.12.14 iOS - Foundation (0) 2021.10.15 iOS - Cocoa Touch (0) 2021.10.15