[IOS] UIModalPresentationStyle의 pageSheet과 formSheet의 차이
IOS

[IOS] UIModalPresentationStyle의 pageSheet과 formSheet의 차이

두 프레젠테이션 방식이 실제 화면에서 어떻게 다른지 비교하기 위해 간략하게 설명하려고 한다. 


UIModalPresentationStyle은 뷰 컨트롤러가 modal 방식으로 화면에 보여질 때 어떤 방식으로 보여줄 것인지 설정하는 열거형 객체이다. 자칫하면 UIModalTransitionStyle과 헷갈릴 수 있는데, UIModalTransitionStyle은 해당 뷰 컨트롤러로 화면이 전환될 때 전환 이펙트(수평 접기, 수직으로 올라오기 등)라고 생각하면 된다. MS PowerPoint의 슬라이드 간 전환 애니메이션과 동일하다고 보면 된다.

글에서 다룰 두 가지 외에도 다른 여러가지 스타일들이 있으나, 여기서는 pageSheetformSheet만 다뤄보도록 하겠다.

 

※ UIModalPresentationStyle은 뷰 컨트롤러가 present 될 때 보여지므로 뷰 컨트롤러에 프로퍼티에 값을 설정할 때 present되는(presented) 뷰 컨트롤러의 프로퍼티를 수정해야한다. (UIModalTransitionStyle도 마찬가지이다.)

 

 

  • UIModalPresentationStyle.pageSheet
A presentation style that partially covers the underlying content.

개발자 문서에 나와있는 설명에 따르면, present되는(presented) 뷰 컨트롤러가 present하는(presenting) 뷰 컨트롤러의 일부를 덮는 프레젠테이션 스타일이라고 돼있다. presenting 뷰 컨트롤러는 present 메소드를 호출한 주체를 의미하고, presented 뷰 컨트롤러는 그 메소드에 의해 새로 보여지는 뷰 컨트롤러를 의미한다.

 

  • UIModalPresentationStyle.formSheet
A presentation style that displays the content centered in the screen.

뷰 컨트롤러의 컨텐츠가 스크린의 중앙에 표시되는 프레젠테이션 스타일이라고 돼있다. 

 

실제로 시뮬레이터로 두 가지 스타일을 적용시켜서 눈으로 확인해보면 두 스타일 모두 아래처럼 동일하게 동작하는 걸 볼 수 있다.

프레젠테이션
pageSheet과 formSheet 스타일

적용시켰을때 모습은 똑같지만 두 가지 스타일 모두 개발자 문서에 나와있는 설명대로 동작하는 것 처럼 보인다. 그럼 이번엔 아이폰이 아니라 아이패드에서 동작하는 모습을 살펴보자.

formSheet 스타일 (왼쪽), pageSheet 스타일 (오른쪽)

formSheet 스타일은 문서에 나와있는 설명대로 스크린의 정중앙에 뷰 컨트롤러를 보여주고 pageSheet는 비교적 넓게 뷰 컨트롤러를 보여준다는 것을  한눈에 알 수 있다.