UINavigationController
UIWindow の rootViewController として があり、縦向きのみをサポートする( ) が として に追加さUIViewController
れます。ControllerA
UINavigationController
rootViewController
後で、UINavigationController's
rootViewController
新しい UIViewController ( ControllerB
) に置き換えます。ControllerB は、ポートレートとランドスケープの両方をサポートします。ControllerA
最初の画面 ( ) は縦向きでのみ機能し、アプリの残りの部分は縦向きと横向きの両方をサポートできるようにしたいと考えています。
[self.navigationController setViewControllers:@[viewControllerB] animated:NO];
| UINavigationController launches:
| ----ControllerA (rootViewController): Portrait only
| ----ControllerB (rootViewController): Portrait and Landscape supported
ControllerA で処理されない横向きでアプリを起動してから ControllerB に移動すると、コンテンツ (+ ステータス バー) は縦向きのままです。この時点でデバイスを手動で回転させると、正しいコンテンツ レイアウトになります。
デバイスの向きで ControllerB をレンダリングするにはどうすればよいですか?
ControllerA と ControllerB の両方の viewWillAppear メソッドから見たものは次のとおりです。
navigationController orientation: UIInterfaceOrientationPortrait
UIViewController interfaceOrientation: UIInterfaceOrientationPortrait
<!-----------!!two values are different!!------------------>
[[UIDevice currentDevice] orientation]: UIDeviceOrientationLandscapeLeft
[[UIApplication sharedApplication] statusBarOrientation]: UIInterfaceOrientationPortrait
Phone is physically held in Landscape at this point in time.