我有一个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 处理的 Landscape 中启动我的应用程序,然后移至 ControllerB,则我的内容(+状态栏)仍处于 Portrait 状态。如果此时我手动旋转设备,我就有了正确的内容布局。
如何使 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.