View Controller Programming Guide for iOS - Presenting and Transitions

Presenting a View Controller

두 가지 방법이 있다.

  • Embedded in Container view controller
  • Present

The Presentation and Transition Process

Presentation Styles

보여지는 모습을 결정. 시스템이 제공하는 기본 스타일도 있지만 커스텀으로 만들 수도 있음. 적절한 스타일을 정하고 present할 뷰 컨트롤러의 modalPresentationStyle 프로퍼티에 할당하면 된다.

Full-Screen Presentation Styles

전체 화면을 덮어 밑에 깔려있는 컨텐츠와의 인터랙션을 막는다. horizontal regular 환경에서 전체를 뒤덮는 스타일은 하나밖에 없다. 덮지 못하는 부분은 거무잡잡하게 처리를 하여 인터랙션을 막는다.

UIModalPresentationFullScreen 스타일을 적용하면 UIKit은 전환 애니메이션이 끝난 후에 아래에 있는 뷰 컨트롤러의 뷰를 제거한다. 이를 막기 위해서는 UIModalPresentationOverFullScreen 스타일을 적용하면 된다.

The Popover Style

UIModalPresentationPopover 스타일은 추가적인 정보나 포커스된 객체의 관련된 아이템의 리스트를 보여줄 때 효과적이다.

horizontal compact 환경에서는 UIModalPresentationFullScreen 스타일처럼 동작한다. 때문에 따로 dismiss할 버튼이나 동작을 추가해야 한다.

The Current Context Styles

UIModalPresentationCurrentContext 스타일은 특정 뷰 컨트롤러를 덮는 스타일이다. 원하는 뷰 컨트롤러의 definesPresentationContextYES로 바꿔준다.

마찬가지로 UIModalPresentationCurrentContext 스타일을 적용하면 UIKit이 뷰의 전환이 끝난 뒤에 아래 뷰를 제거한다. 이것을 막기 위해서는 UIModalPresentationOverCurrentContext를 적용하면 된다.

Custom Presentation Styles

UIModalPresentationCustom 스타일을 적용해 개발자가 임의로 스타일을 지정해 줄 수 있다. UIPresentationController를 상속 받아 커스텀 스타일을 만들 수 있다.

Transition Styles

Present 할 뷰 컨트롤러의 modalTransitionStyle 프로퍼티에 원하는 스타일을 지정해서 전환되는 모습을 바꿀 수 있다.

Presenting Versus Showing a View Controller

UIViewController는 뷰 컨트롤러를 보이게 하는 두 가지 방법을 제공한다.

  • showViewController:sender:showDetailViewController:sender: 메서드는 가장 적절한 방법으로 뷰 컨트롤러를 표시한다. 컨테이너 뷰 컨트롤러에 속해 있을 때는 거기에 맞는 방식으로, 기본은 모달 형식이다.
  • presentViewController:animated:completion: 메서드는 항상 모달로 뷰 컨트롤러를 띄운다.

Presenting a View Controller

다음과 같은 방법으로 뷰 컨트롤러의 presentation을 시작한다.

  • Segue
  • showViewController:sender:showDetailViewController:sender:
  • presentViewController:animated:completion:

Showing View Controllers

(WIP…)

Reference