iOS의 자동회전 문제를 수정하면서 다시 한번 난관에 부딪쳤다.

기존 버전에서는 Landscape상태에서 Modal을 presentation 하면 새로운 뷰가 올라오면서 자동으로 Portrait 모드로 변경되어 팝업이 되었는데

iOS6에서는 Landscape상태 그대로 팝업이 되었다.

더군다나 회전을 방지하기 위해 shouldAutorotate값을 NO로 해두었기 때문에 팝업된 이후 rotation은 동작하지 않았다.

그래서 이런 문제를 해결하기 위해 UIViewController의 rotation 메소드를 확인 할 결과 아래와 같은 메소드를 발견하였다.

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation

이름에 presentation도 들어가있고 preferred? 선호?? 라는 이름을 보고 아 이거다 하고 이 메소드를 오버라이드 한 후

다시 모달을 presentation 한 결과 내가 원하는 방향으로 팝업시킬수 있게 되었다.

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationPortrait;
}

물론 이 메소드 역시 iOS6에서 새로 추가된 메소드이기 때문에 코드를 추가한 후 iOS5에서 빌드할 때도 문제가 발생하지 안았다. (물론 결과는 반영되지 않는다)

그리고 한가지 팁은 만약  modal로 뛰울때 navigation이 되는 뷰를 올릴 경우 navagation에 들어가는 모든 viewController에 회전값을 입력하기 보다는

navigation뷰를 상속받아 회전에 대한 내용을 명시하고 사용한다면 navigation된 뷰 역시 모두 영향을 받으니 주의해야한다.

 

 

 

+ Recent posts