我的应用有一个UINavigationController,它不支持旋转。但是我想在导航控制器顶部显示一个应该支持旋转的模态视图控制器。这可能吗?我试图在模式显示的视图控制器上覆盖shouldAutorotateToInterfaceOrientation
,但似乎不起作用。
答案 0 :(得分:1)
我认为除了显示模式返回shouldAutorotateToInterfaceOrientation
的视图控制器的YES
之外,还应覆盖导航控制器的shouldAutorotateToInterfaceOrientation
,以便在该模式下返回YES
视图控制器正在显示,否则为NO
。
答案 1 :(得分:0)
您需要确保您的设备生成设备方向通知(UIDeviceOrientationDidChangeNotification):
确保:
generatesDeviceOrientationNotifications设置为true
来自Apple文档:
“窗口对象完成了与更改当前方向相关的大部分工作。但是,它与根视图控制器一起工作,以确定是否应该发生方向更改,如果是,则应该使用哪些其他方法如果这个控制器是一个容器,它可能依赖于一个孩子来决定是否应该进行这种改变。“
因此,如果您的根视图控制器(UINavigationController?)不支持旋转,那么当您的应用启动时,这可能会设置为false。在这种情况下,您需要在适当的时候重新打开它:
UIDevice myDevice = [UIDevice currentDevice];
[myDevice beginGeneratingDeviceOrientationNotifications];
答案 2 :(得分:0)
我在另一篇文章中找到了答案:UIViewController inside a root ViewController not rotating
关键是
- (void)addChildViewController:(UIViewController *)childController
和
- (BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers