iOS Developer Library

Developer

iOS Human Interface Guidelines

iBooks

iOS 앱 해부

대부분의 iOS 앱들은 UIKit 프레임워크에서 정의된 UI요소들을 최소한 몇 개는 사용하고 있다. 그들의 이름과 역할, 그리고 기능을 아는 것은 앱의 UI를 디자인 할 때 세련된 결정을 하는 데 도움을 준다.

image: ../Art/uikit_ui_elements_2x.png

UIKit에 의해 제공되는 UI요소들은 크게 4가지 카테고리로 나뉜다. :

  • 바(Bar)들. 사용자들에게 지금 어디쯤에 있는지를 알려주고 네비게이션하거나 액션을 시작할 수 있는 컨트롤을 포함하는 컨텍스춸한 정보를 담고 있다.

  • 콘텐트 뷰들. 앱 특유의 콘텐트를 담고, item들의 스크롤링이나 삽입, 삭제, 그리고 재배열을 하는 behavior를 사용할 수 있다.

  • 컨트롤들. 액션을 실행하거나 정보를 표시한다.

  • 임시 뷰들. 사용자에게 중요한 정보를 제공하거나 추가적인 선택과 기능을 주기 위해 일시적으로 보임.

UI 요소를 정의하는 것 외에도, UIKit은 제스처 인식기, 드로잉, 접근성, 그리고 프린팅 지원같은 기능을 구현하는 오브젝트들도 정의한다.

프로그램적으로, UI요소들은 UIView로부터 상속되었기 때문에 의 일종으로 생각된다. 뷰는 스크린에 자신을 어떻게 그려야하는지를 알고 있으며 사용자가 그 경계선 내부를 터치하는 것을 알고 있다. 컨트롤들 (버튼이나 슬라이더 같은) , 콘텐트 뷰들(콜렉션 뷰들과 테이블 뷰들), 그리고 임시 뷰들(경고나 액션시트)은 모두 뷰의 일종이다.

앱에서 뷰의 집합이나 계층을 관리하기 위해, 주로 뷰 컨트롤러를 이용한다. 뷰 컨트롤러는 뷰들의 표시를 관리(coordinate)하여, 사용자 인터렉션 뒤의 기능들을 구현하며, 한 화면에서 다른 화면으로 전환하는 것을 관리할 수 있다. 예를 들어, '설정'은 뷰들의 계층을 표시하기 위해 네비케이션 컨트롤러를 사용한다.

여기 iOS 앱에서 UI를 보여주기 위해 어떻게 뷰와 뷰 컨트롤러가 결합할 수 있는지를 보여주는 예가 있다.

image: ../Art/windowlayers_world_clock_2x.png

개발자가 뷰나 뷰 컨트롤러 같은 용어로 생각을 하지만, 사용자들은 iOS 앱을 스크린의 모음으로 경험하는 경향이 있다. 이런 관점에서, screen은 일반적으로 앱에서의 독특한 시각적 상태 또는 모드에 해당한다.

개발자로서, 여러 곳에서 스크린에 대해 외부 디스플레이 엑세스를 위해 사용하는 UIScreen 오브젝트를 참조하는 용어로 사용하는 것을 읽어 봤겠지만 iOS Human Interface Guidelines에서는, screen이라는 용어는 대부분의 사용자들이 이해하는 것 처럼 사용된다.