본문 바로가기

공부/iOS

iOS - About App Development with UIKit (UIKit을 통해 앱 개발하기)

안녕하세요. brody입니다.

저번시간에 UIKit 문서를 한번 봤었죠.

이번 블로그에는 UIKit 문서에서 필수항목이라고 했던 것 중에 하나인 About App Development with UIKit (UIKit을 통해 앱 개발하기) 문서를 한번 볼게요!

 

이번에는 바로 시작 할게요~

(보라색 글씨는 문서와 상관없는 제 생각입니다.)

 

시작!

 


About App Development with UIKit

UIKit과 Xcode가 iOS 및 TVOS앱을 위해 제공하는 기본적인 지원에 대해 알아봅니다.

 

 

Overview

UIKit 프레임워크는 iOS 및 TVOS용 앱을 만드는 데 필요한 핵심 객체(core object)를 제공합니다.

이러한 object를 사용하여 화면에 컨텐츠를 표시하고, 해당 컨텐츠와 상호작용하며, 시스템과 상호 작용을 관리 할 수 있습니다.

앱은 기본 동작을 위해 UIKit에 의존하며, UIKit은 당신의 필요를 충족시킬수 있는 행동(behavior)을 할 수 있게 커스터마이즈 하는 많은 방법을 제공합니다. 

 

중요

당신은 항상 애플의 통합 개발 환경인 Xcode에서 프로젝트를 만들어 iOS 또는 TVOS 앱을 개발하기 시작합니다.

Xcode가 없는 경우 앱 스토어에서 다운로드할 수 있습니다.

developer.apple.com 에서 최신 버전을 다운로드 할 수 있습니다.

 

 

[그림1]프로젝트 생성 시 볼 수 템플릿 프로젝트

 

 

Xocde는 템플릿 프로젝트를 생성하는 모든 앱의 시작점을 제공합니다.(템플릿 프로젝트는 위의 [그림 1]을 참고하세요)


예를들어, [그림 2]은 Xcode에서 단일 뷰 앱 템플릿을 사용하여 만든 앱의 구조를 보여줍니다.(많이 보던 화면이죠 ㅎㅎ)

 

템플릿 프로젝트는 최소 유저 인터페이스를 제공하므로 프로젝트를 즉시 구축하고 실행할 수 있으며 디바이스(실제폰) 또는 시뮬레이터에서 결과를 볼 수 있습니다.

 

[그림2] single view 앱의 구조

 

당신이 앱을 빌드할때, Xcode는 원본 파일(source file)을 컴파일하고 프로젝트에서 사용할 앱번들(app bundle)을 만듭니다.

 

앱번들은 앱과 연결된 코드와 리소스를 포함하는 구조화된 디렉토리입니다.

 

리소스에는 image asset, 스토리보드 파일들, 스트링 파일들 및 코드를 지원하는 앱 메타데이터가 포함되어 있습니다.

 

앱 번들의 구조도 중요하지만, Xcode는 당신의 리소스가 어디로 가야하는지 알고있으니 지금은 걱정하지 않아도 됩니다.

 

Required Resources

모든 UIKit 앱에는 다음 리소스가 있어야 합니다.

 

  • App icons
  • Launch Screen storyboard 

그럼 하나하나 알아보겠습니다.

 

App icons

시스템이 홈 스크린, 설정 및 다른 앱과 차별화하는 데 필요한 위치에 앱 아이콘을 표시합니다.

 

여러 장치와 장소에서 사용되므로 Xcode 프로젝트의 AppIcon image asset에 여러 버전의 앱 아이콘을 제공합니다.(사이즈별로 제공하는 이유죠 ㅎㅎ)

 

사용자가 홈 스크린에서 프로그램을 빨리 식별할 수 있도록 앱 아이콘이 고유해야 합니다.

 

그러나 제공해야 하는 여러 이미지 크기에 맞게 아이콘의 세부 정보를 변경할 수 있습니다.

 

[그림3] iOS 앱에 제공되는 아이콘들

Launch screen storyboard

LaunchScreen.storyboard 파일에는 앱의 초기화 유저 인터페이스가 포함되어 있으며, 그것은 스플래시 화면 또는 실제 인터페이스의 단순화(simplified)버전 일 수 있습니다.


사용자가 앱의 아이콘을 탭하면 시스템이 즉시 실행 화면을 표시하여 앱이 지금 실행 중임을 사용자에게 알려줍니다.

 

또한 launch screen은 앱이 초기화 되는동안 해당 앱에 대한 커버를 제공합니다.

 

앱이 준비되면 시스템은 launch screen을 숨기고 앱의 실제 인터페이스를 드러냅니다.

(예전에는 storyboard가 아니라 xib였던거 같은데 어느순간 바뀌었네요 하하..)

 

 

Required App Metadata

시스템은 앱 번들에 있는 정보 속성(property) 목록인 Info.plist 파일에서 앱의 구성앱의 구성 및 기능에 대한 정보를 가져옵니다.

 

Xcode는  프로젝트 만들기에서 제공하는 탬플릿으로 만드는 프로젝트들에 이 파일(Info.plist)를  사전 구성된 버전을 제공하지만 언젠가는 이 파일을 수정해야 할 것입니다.

(그렇지.. 당장에 인터넷 연결만 하려고 해도 필요하니까요 ..ㅋ)

 

예를들어, 앱이 특정 하드웨어에 의존하거나 특정 시스템 프레임워크를 사용하는 경우 이러한 기능과 관련된 정보를 이 파일에 추가해야 할 수 있습니다.

 

[그림4] 앱의 하드웨어 및 소프트웨어에 필요한것을 선언

Info.plist 파일에 포함할 수 있는 키에 대한 자세한 내용은 Information Property List Key Reference(정보 속성 목록 키 참조) 를 참조하세요.

 

 

Code Structure of a UIKit App

UIKit은 많은 앱의 core object(핵심 object)를 제공하는데, 거기에는 시스템과 상호작용하는것, 앱의 메인 이벤트 루프를 실행하는것, 콘텐치를 당신의 화면에 표시하는것까지 포함되어 있습니다.

당신은 대부분의 object를 그대로 사용하거나 약간만 수정하여 사용하면 됩니다.

수정할 object와 object를 수정할 시기를 파악하는 것은 앱을 구현하는 데 매우 중요합니다.

 

UIKit 앱의 구조는 MVC(Model-View-Controller) 디자인 패턴을 기반으로 하며, 여기서 object는 목적에 따라 구분됩니다.

 

Model object는 앱의 데이터와 비즈니스 로직을 관리합니다.
View object는 데이터의 시각적 표현을 제공합니다.
Controller object는 모델과 뷰 개체 간의 다리(bridge)역할을 하며, 적절한 시점에 모델 간에 데이터를 이동합니다.

아래의 [그림 5]는 UIKit 앱의 전형적인 구조를 나타냅니다.

 

당신은 앱의 데이터 구조를 나타내는 model object를 제공합니다.

 

UIKit은 대부분의 view object를 제공하지만, 필요하다면 커스텀 view를 정의하여 사용할 수 있습니다.

 

data object 와 UIKit View간의 데이터 교환을 조정하는것은 view controller와 app delegate object 입니다.

 

The core app objects

 


UIKit 및 Foundation 프레임워크는 앱의 model object를 정의하는데 사용하는 많은 기본 유형을 제공합니다.

 

UIKit는 디스크 기반 파일에 속하는 데이터 구조를 구성하기 위한 UIDocuation object를 제공합니다.

 

Foundation 프레임워크는 문자열, 숫자, 배열 등 기타 데이터 유형을 나타내는 기본 객체(basic object)를 정의합니다.


Swift Standard Library는 Foundation 프레임워크에서 사용할 수 있는 많은 같은 자료형(타입)을 제공합니다.

UIKit은 앱의 controller와 View layer에 있는 대부분의 object를 제공합니다.

특히 UIKit은 UIView 클래스를 정의하며, UIView 클래스는 일반적으로 콘텐츠를 화면에 표시합니다(Metal 및 다른 시스템 프레임워크를 사용하여 콘텐츠를 직접 화면에 렌더링 할 수도 있습니다.)

UIApplication object는 앱의 기본 이벤트 루프를 실행하고 앱의 전체 생명 주기(life cycle)을 관리합니다.

 

 

같이보면 좋은것
(Essentials)Protecting the User’s Privacy

 


 

여기까지 UIKit을 통한 앱개발에 대한 문서를 봤는데요.

 

아는내용인데도 뭔가 잘 정리가 되어있지 않아서 헷갈리는 문서였어요...

 

관리 안할줄 알았는데 launch screen이 storyboard인거보면 관리는 하나보네요 ㅋㅋㅋ

 

그리고 의도치 않게 MVC에 대한 내용도 정리했네요 하하...

 

UIKit을 통한 앱 개발인데 앱번들이 있는거 보니... 앱번들을 만드는것도 UIKit의 몫인지는 자세한 내용이 없어서 헷갈리네요.. 

 

아시는분은 댓글로 부탁드릴게요. 

 

제가 잘못 번역한 부분도 댓글로 써주시면 바로 수정하겠습니다.

 

ㅅㄱㄹ!