我正在尝试定义shouldAutorrotate方法,但我不知道在哪里定义它,因为它永远不会被调用。我有一个UITabBarController,在我的项目中有三个选项卡(每个选项卡,带有一个根导航控制器)。我的目标是在某些特定情况下禁用自动旋转。
谢谢!
答案 0 :(得分:1)
好的,解决了。我做了什么:在我最顶层的导航控制器中我定义了
-(BOOL)shouldAutorotate {return [self.visibleViewController shouldAutorotate];}
然后,在我的下一个viewController
中-(BOOL)shouldAutorotate {return NO;}
谢谢你们!
答案 1 :(得分:0)
您可以在要为其禁用自动旋转的viewcontroller.m
文件中编写该方法
这是iOS 6的代码:
#ifdef IOS_NEWER_OR_EQUAL_TO_6
-(BOOL)shouldAutorotate
{
return NO;
}
#endif
答案 2 :(得分:0)
iOS 6中的自动旋转正在发生变化。在iOS 6中, shouldAutorotateToInterfaceOrientation:UIViewController的方法是 弃用。在它的位置,你应该使用 supportedInterfaceOrientationsForWindow:和shouldAutorotate方法。
更多责任转移到应用和应用代表。现在, iOS容器(如UINavigationController)不咨询他们的 孩子们要确定他们是否应该自行旋转。默认情况下, app和视图控制器支持的界面方向已设置 用于iPad的成语和UIInterfaceOrientationMaskAll 用于iPhone习语的UIInterfaceOrientationMaskAllButUpsideDown。
一个 视图控制器支持的接口方向可以转换 时间 - 甚至应用程序支持的界面方向可以转换 时间。系统询问最顶层的全屏视图控制器 (通常是根视图控制器)用于其支持的接口 设备旋转时或视图控制器时的方向 呈现全屏模态演示风格。此外, 仅当此视图控制器时才检索支持的方向 从shouldAutorotate方法返回YES。系统相交 视图控制器支持的方向,支持应用程序 方向(由Info.plist文件或应用程序确定 委托的应用程序:supportedInterfaceOrientationsForWindow: 方法)确定是否旋转。
系统确定是否 通过交叉返回的值来支持方向 app的supportedInterfaceOrientationsForWindow:带有值的方法 由最顶层的supportedInterfaceOrientations方法返回 全屏控制器。
setStatusBarOrientation:animated:方法 完全不被弃用。它现在只适用于 最顶层全屏视图的supportedInterfaceOrientations方法 控制器返回0.这使得调用者负责确保 状态栏方向是一致的。
所以我首先尝试在app delegate中实现该行为。如果这对您的用例来说太粗糙,我会尝试为各个内容视图控制器实现-shouldAutorotate
(注意单r
!)方法。如果这不起作用(参见上面的引用),请在容器控制器中实现此方法,即。标签栏控制器或导航控制器。
另见WWDC 2012会议#236,The Evolution of View Controllers on iOS。