도서 '꼼꼼한 재은 씨의 스위프트: 기본편'을 공부하면서 정리한 내용입니다.
전체 목록은 여기에서 볼 수 있습니다.

iOS 유저 인터페이스의 표현 구조


  • Window
    • 콘텐츠를 가진 뷰를 내부에 배치하여 화면에 출력
    • 고정된 윈도우 객체에 대해서 기존의 뷰가 반응하거나 다른 뷰로 전환하면서 화면이 바뀜
  • View
    • 윈도우의 일부를 자신의 영역으로 정의하여 콘텐츠를 표시함
    • 윈도우로부터 전달된 사용자의 입력에 반응

windowlayers.jpg
Layered views in the Clock application
고정된 하나의 윈도우와 하나 이상의 뷰가 결합하여 화면을 구성한다

  • View Controller
    • 윈도우와 뷰 사이의 연결체
    • 뷰를 윈도우에 전달하고, 터치 이벤트를 윈도우로부터 전달받아 처리함
    • Root View Controller
      • 윈도우가 참조하는 유일한 뷰 컨트롤러
    • Contents View Controller
      • 뷰가 가진 콘텐츠를 표시하는 뷰 컨트롤러
    • Container View Controller
      • 다른 뷰 컨트롤러의 연결 관계를 관리
      • 내비게이션 컨트롤러, 탭 바 컨트롤러, 페이지 컨트롤러 등
  • 뷰의 계층 구조 (View hierachy)
    • 뷰 컨트롤러 내부는 수많은 뷰로 이루어짐
    • 뷰는 자기 자신을 스크린상에 표시하기도 하지만, 동시에 다른 뷰 객체를 포함하는 컨테이너 역할을 수행함
    • superview : 뷰의 계층 구조 상에서 다른 뷰를 포함하는 뷰
    • subview : 슈퍼 뷰에 포함된 뷰
    • Root View or Contents View
      • 뷰 계층 구조 최상위의 뷰
      • 항상 화면 전체를 채울 수 있는 크기를 유지
      • 서브 뷰들을 모아 하나의 전체 뷰를 구성
      • 뷰 컨트롤러를 통해 구성된 뷰를 윈도우에 전달

rootVC.png
윈도우와 루트 뷰 컨트롤러, 콘텐츠 뷰에 대한 참조 관계

View Controller


화면 구성 요소들인 뷰를 관리하고, 화면과 데이터 사이의 상호 작용을 관리한다. 즉 윈도우 객체로부터 전달된 이벤트를 받아 반응하여 화면으로 표현하는 등의 역할을 한다. 다음은 주요 컨트롤러와 구현 클래스를 정리한 표이다.

컨트롤러 기능 구현 클래스
View Controller 화면을 구성하고 콘텐츠를 표현하는 기본 뷰 컨트롤러 UIViewController
Navigation Controller 화면의 이동과 계층적 탐색을 위한 컨트롤러 UINavigationController
Table View Controller 목록을 구현하기 위한 컨트롤러 UITableViewController
Tab bar Controller 병렬적 화면을 탭으로 구분하기 위한 컨트롤러 UITabbarController
Split View Controller 메인 - 서브 화면 분할용 컨트롤러 UISplitViewController

뷰 컨트롤러와 뷰의 참조 관계

VCPG_ControllerHierarchy_fig_1-1_2x.png

뷰 컨트롤러의 상태 변화와 생명 주기


새로운 장면으로 전환하거나 이전 화면으로 복귀하는 과정에서 뷰 컨트롤러의 객체의 생성과 소멸이 발생한다.

1_etDLgjBamDJoiaM3_hie9A.png
뷰 컨트롤러의 상태와 상태 변화에 따라 호출되는 메소드

뷰 컨트롤러의 ~ing 상태의 의미

뷰 컨트롤러의 상태 중에서 appearing 과 disappearing은 화면이 전환되는 상태에서 발생한다. 기존에 보여지던 뷰는 disappearing 상태가되고 새로 보여지는 뷰는 appearing 상태가 되는것이다. 이 상태에서 화면 전환 애니메이션을 적용할 수 있다. 다만 홈 버튼을 누르는 경우에는 disappearing 상태만 존재하고 다른 뷰 컨트롤러와 교차하지 않는다.