About App Development with UIKit

Panther·2021년 3월 23일
0

https://developer.apple.com/documentation/uikit/about_app_development_with_uikit

"Learn about the basic support that UIKit and Xcode provide for your iOS and tvOS apps."

iOS와 tvOS 앱을 위해 UIKitXcode가 제공하는 기본적인 지원사항에 대해 배울 수 있는 글입니다.

Overview

UIKit 프레임워크는 iOS와 tvOS을 설계할 때 필요한 핵심 객체를 제공합니다. 이와 같은 객체들은 화면에 컨텐트를 표시하기 위해서, 해당 컨텐트와 상호작용하기 위해서, 그리고 시스템과 상호작용을 관리하기 위해 사용할 수 있는 객체들입니다. 앱은 기본적인 동작에서 UIKit에 의존합니다. 그리고 UIKit은 특정 개발 의도에 부합하는 동작을 커스텀으로 만들 수 있는 여러 가지 방법을 제공합니다.

IMPORTANT
iOS 혹은 tvOS 앱을 개발하려면 우선 애플의 통합 개발 환경인 Xcode에서 프로젝트를 생성하는 것부터 출발해야 합니다. Xcode를 갖고 있지 않다면, 앱 스토어에서 다운로드할 수 있습니다. <developer.apple.com>에서 최신 버전을 다운로드할 수도 있습니다.

생성하고자 하는 모든 앱에 대해서 Xcode는 시작에 있어 템플릿 프로젝트를 제공합니다. 예를 들어 Figure 1은 Xcode에서 싱글 뷰 앱 템플릿을 사용해 생성된 앱의 구조를 보여주고 있습니다. 템플릿 프로젝트는 최소한의 UI만 제공함으로써 즉시 프로젝트를 설계하거나 실행해볼 수 있도록 하고, 기기나 시뮬레이터에서 그 결과를 볼 수 있도록 해줍니다.

앱을 설계할 때 Xcode는 소스 파일을 컴파일하고 프로젝트를 위한 앱 번들을 생성합니다. 앱 번들은 앱과 관련된 코드와 리소스를 포함하는 구조화된 디렉토리입니다. 리소스는 코드를 지원하는 이미지 에셋, 스토리보드 파일, 스트링 파일, 앱 메타데이터를 포함합니다. 앱 번들의 구조는 중요합니다. Xcode는 리소스가 어느 곳으로 가야 하는지에 대해서 알고 있으니 앱 번들의 구조에 대해 당장 걱정할 필요는 없습니다.

Required Resources

모든 UIKit은 아래 리소스를 필수적으로 요구합니다.

  • 앱 아이콘입니다.
  • launch 스크린 스토리보드입니다.

시스템은 홈 스크린, 설정, 다른 앱과 차별화가 필요한 모든 곳에서 앱 아이콘을 표시합니다. 여러 장소와 여러 기기에서 사용되기 때문에 Xcode 프로젝트의 AppIcom 이미지 에셋에 여러 가지 버전의 앱 아이콘을 제공해야 합니다. 앱 아이콘은 사용자가 홈 스크린에서 빠르게 찾을 수 있도록 다른 앱의 아이콘과 구분될 수 있는 성격을 가져야 합니다. 그러나 제공해야 하는 다양한 이미지 크기를 수용하기 위해 아이콘의 세부적인 부분을 다양화할 수 있습니다.

Figure 2 Providing icons for an iOS app

LaunchScreen.storyboard 파일은 앱의 초기 UI를 포함하고 있고, 이는 스플래시 스크린 혹은 실제 인터페이스의 단순화된 버전이 될 수 있습니다. 사용자가 앱의 아이콘을 탭하면, 시스템은 launch 스크린을 즉시 표시합니다. 이로써 앱이 현재 launch되고 있음을 사용자가 알 수 있도록 해줍니다. launch 스크린은 스스로 초기화되는 동안 앱의 커버를 제공하기도 합니다. 앱이 준비가 되면 시스템은 launch 스크린을 숨기고 앱의 실제 인터페이스를 보여줍니다.

Required App Metadata

시스템은 앱 번들에 있는 Info.plist 파일로부터 앱의 설정과 기능에 대한 정보를 가져옵니다. Xcode는 모든 새 프로젝트 템플릿에서 사전에 정의된 Info.plist 파일을 제공합니다. 필요한 경우 이 파일을 수정할 수도 있습니다. 예를 들어 앱이 특정 하드웨어에 의존하거나 특정 시스템 프레임워크를 사용하는 경우 이 파일에 기능과 관련한 정보를 추가해야 할 필요가 있습니다. Info.plist 파일에 수정이 필요한 흔한 경우는 앱의 하드웨어와 소프트웨어 요구사항을 선언하는 경우입니다. 이 요구사항은 앱이 실행에 필요한 것에 대해 시스템과 소통하는 방법에 대한 것입니다. 예를 들어 네비게이션 앱은 turn-by-turn 방향을 제공할 수 있는 GPS 하드웨어의 존재를 요구할 것입니다. 앱 스토어는 앱의 요구사항을 충족시키지 못하는 기기의 경우 앱이 설치되는 것을 방지해줍니다.

Figure 3 Declaring your app's hardware and software requirements

Info.plist 파일에 포함될 수 있는 키에 대한 더 많은 정보는 Information Property List Key 레퍼런스를 참고하시기 바랍니다.

Information Property List Key
https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Introduction/Introduction.html#//apple_ref/doc/uid/TP40009247

Code Structure of a UIKit App

UIKit은 시스템과 상호작용, 앱의 메인 이벤트 루프 실행, 컨텐트를 화면에 표시하는 것 등 앱의 여러 핵심 객체들을 제공합니다. 대부분의 객체를 그대로 사용하거나 약간의 수정을 통해 사용하시기 바랍니다. 앱의 구현에 있어 어떤 객체를 수정해야 하는지 아는 것과 언제 수정해야 하는지를 아는 것은 중요합니다.

UIKit 앱의 구조는 객체가 그들의 목적에 맞게 나눠진 MVC 디자인 패턴을 기반으로 합니다. 모델 객체는 앱의 데이터와 비즈니스 로직을 관리합니다. 뷰 객체는 데이터를 시각적으로 표현하는 것을 제공합니다. 컨트롤러 객체는 모델과 뷰 객체 사이의 다리 역할을 하며, 적합한 때에 모델과 뷰 사이에서 데이터를 움직입니다.

Figure 4는 UIKit의 전형적인 구조를 나타내고 있습니다. 앱의 데이터 구조를 나타내는 모델 객체를 제공하고 있습니다. UIKit은 대부분의 뷰 객체를 제공합니다. 필요한 경우 커스텀 뷰를 직접 정의할 수도 있습니다. 데이터 객체와 UIKit 뷰 사이에서 데이터의 교환을 조정하는 것은 뷰 컨트롤러와 앱 딜리게이트 객체입니다.

Figure 4 The core app objects

UIKitFoundation 프레임워크는 앱의 모델 객체를 정의하기 위해 사용할 수 있는 여러 가지 기본적인 타입을 제공합니다. UIKit은 디스크 기반 파일에 속하는 데이터 구조를 조직화할 수 있는 객체인 UIDocument 객체를 제공합니다. Foundation 프레임워크는 스트링, 넘버, 배열, 기타 데이터 타입을 나타내는 기본적인 객체를 정의합니다. 스위프트 표준 라이브러리는 Foundation 프레임워크에서 사용이 가능한 여러 가지 동일 타입을 제공합니다.

UIKit은 앱의 컨트롤러와 뷰 레이어에서 대부분의 객체를 제공합니다. 구체적으로 UIKit은 컨텐트를 화면에 표시할 책임을 갖는 UIView 클래스를 정의합니다. (Metal이나 기타 시스템 프레임워크를 통해 직접 컨텐트를 렌더링할 수도 있습니다.) UIApplication 객체는 앱의 메인 이벤트 루프를 실행하고 앱의 전체적인 생명주기를 관리합니다.

See Also


Essentials

Protecting the User’s Privacy

개인 데이터의 보안을 보장하고, 데이터가 어떻게 사용될 것인지에 대한 사용자 preference를 존중해줄 수 있도록 합니다.

https://developer.apple.com/documentation/uikit/protecting_the_user_s_privacy
https://velog.io/@panther222128/Protecting-the-Users-Privacy


0개의 댓글