iOS6에서 특정 View Controller에서의 화면 회전(Auto rotation) 제어하기

h3 앱을 구현하면서 릴리즈 후 modal 된 view controller 들이 회전이 되어버리는 문제가 생겨서 이 부분을 수정하였다.

수정한 것을 설명하기 이전에 알아두어야 할 것은 auto rotation에 관련된 base method가 변경되었다는 것이다.
UIViewController를 들여다보면 이전에 사용하던 – (BOOL)shouldAutorotateToInterfaceOrientation: 메소드가 deprecated되고,
대신 -(BOOL)shouldAutorate 메소드와 -(NSUInteger)supportedInterfaceOrientations,  -(UIInterfaceOrientation)preferredInterfaceOrientationForPresentations 가 추가된 것을 볼 수 있다.

즉, iOS6에서는 기존에 사용하던 메소드가 동작하지 않는다는 것이며, 새로운 메소드를 이용해야 한다는 것을 볼 수 있다.
Deployment target이 5.x 일 경우에는 기존 메소드를 정의해놓는 것은 잊지 말고…

처음에 언급했던 이슈에 대해서는 사실 메뉴와 컨텐츠가 위치한 main view controller에서 미리 적용하여 문제가 없었으나,
로그인/회원가입, 사전등록 페이지에서는 화면이 돌아가버리는 문제점이 생겼다. 위의 메소드가 적용되었음에도 말이다.

이 문제 해결을 위해 애플 공식 문서를 비롯해 여러 자료를 참고하다보니 언뜻 떠오른 방법이 생각나 이를 적용했더니 깔끔하게 해결되었다.

문제는 view controller가 modal 할 때 UINavigationController를 품고 modal 되니 auto rotation의 주체는 view controller가 아닌 UINavigationController였다.
따라서, UINavigationController를 상속받는 custom view controller를 정의하여
여기에 -(BOOL)shouldAuotorate와 – (NSUInteger)supportedInterfaceOrientations를 아래와 같이 적용하였다.

이로써 문제 해결 완료!

 

0 Shares:
댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.

You May Also Like

iOS6에서 다시 태어난 UUID!

iOS5부터 deprecated된 기기의 UDID를 가져오는 메소드 때문에 골머리 썩고 있는 업체가 많은 것으로 알고 있다. 사실 나부터 이것…