2012-10-10 4 views
1

iOS5에서 가로 방향으로 앱이 완벽하게 작동했습니다. 그러나 iOS6에서는 모든보기 컨트롤러에서 세로 방향을 사용하기 시작했습니다. shouldAutorotateToInterfaceOrientation 메소드는 더 이상 호출되지 않습니다. 나는 new stuff about changed rotation mechanism in iOS6를 읽고 난 내 AppDelegate에 한 줄을 추가하여 것을 해결할 수 있었다 :iOS6 : 다른 방향을 지원하기 위해 App Delegate에서 rootViewController를 설정해야합니까?

self.window.rootViewController = _viewController 

_viewControler이 시작 화면 (홈 메뉴)입니다. 다른 모든 뷰 컨트롤러는 shouldAutorotateToInterfaceOrientation 메서드를 구현하고 가로 방향에서만 YES를 반환합니다. 그래서, 그것은 하나의 방향 만 지원해야하는 앱을위한 완벽한 솔루션입니다.

그러나 문제는 하나의보기 컨트롤러 (phone-VC라고도 함)가 세로 방향으로 표시되어야한다는 것입니다. 이제이 뷰 컨트롤러를 회전하려면 appDelegate의 rootViewControler에 지정된 홈 메뉴 컨트롤러에서 YES를 반환해야합니다. 그러나이 rootViewController가 가로로만 표시해야하는 창을 시작하기 때문에이 작업을 수행 할 수 없습니다. 그렇지 않으면이 창의 그래픽이있는 레이아웃이 중단됩니다. 그러나 shouldAutorotateToInterfaceOrientation (Home-menu)에서 YES를 반환하지 않으면 내 뷰 phone-VC에서 같은 메서드가 호출되지 않고 세로로 표시되어야합니다.

아이디어가 있으십니까? AppDelegate에서 rootViewController 지정은 필수입니까?

업데이트 : 기기에 문제가 있습니다 (적어도 iPhone4 이상).

+0

실제 장치 또는 시뮬레이터에서 회전 문제가 있습니까? 나는 실제 장치에서 시뮬레이터 회전이 다른 것을 알았다. 이 옵션을 선택합니다 – rckoenes

+0

... http://stackoverflow.com/questions/11544382/ios-6-screen-rotation-without-using-storyboard http://stackoverflow.com/questions/12775265/ios-6-shouldautorotate-is-not-called-called – user1662392

답변

1

예, iOS 6.0 이상부터는 Windows.rootViewController에 rootviewcontroller를 할당해야합니다. 이 컨트롤러는 자녀의 회전 여부를 결정합니다. 기본적으로 모든 방향이 지원되지만 shouldAutoRotate 및 supportedInterfaceOrientations 대리자 메서드를 구현하여 방향을 제한 할 수 있습니다. 내가 window에 subview로 viewcontroller를 추가하는 MGSplitViewController을 사용하여 rootviewcontroller가 Windows에 할당되지 않은 인스턴스가있었습니다. 나는 rootviewcontroller를 만들기 위해 그것을 바꿀 필요가 있었고 모두 잘 동작했다.

Apple 문서의 UIKit 섹션 - iOS 6.0 릴리스 정보를 확인하십시오.

관련 문제