iOS6自动旋转。 TabBar->导航 - >模态

时间:2012-11-17 06:02:56

标签: iphone rotation ios6

我几乎已经阅读了关于新iOS6自动旋转的所有答案,但我仍然无法做到我想做的事。

我有一个tabBar。其中一个选项卡是NavigationView。当你将iPhone转为横向时,会加载一个modalViewController。

在iOS5上一切正常但我无法在iOS6上获得旋转的模态视图。我已经尝试了子类化导航控制器,子类化tabbar控制器和两者!没办法。

我现在很困惑。哪一个是负责旋转模态视图? tabbarController?,navigationViewController ?,呈现它的viewController?。

我很感激任何帮助。

由于

2 个答案:

答案 0 :(得分:2)

在iOS6中,您必须更改应用程序的旋转。 application.statusBarOrientation = UIInterfaceOrientationLandscapeLeft;

答案 1 :(得分:0)

iOS 6中的自动旋转正在发生变化。 在iOS 6中,不推荐使用shouldAutorotateToInterfaceOrientation: UIViewController方法。取而代之的是,您应该使用supportedInterfaceOrientationsForWindowshouldAutorotate方法。

更多责任转移到应用和应用代表。现在,iOS容器(例如UINavigationController)不会咨询他们的孩子以确定他们是否应该自动旋转。默认情况下,应用程序和视图控制器支持的界面方向对于iPad惯用语设置为UIInterfaceOrientationMaskAll,对于iPhone惯用语设置为UIInterfaceOrientationMaskAllButUpsideDown

视图控制器支持的界面方向可能会随着时间的推移而变化 - 即使应用程序支持的界面方向也会随着时间的推移而变化。无论何时设备旋转或每当视图控制器呈现全屏模态呈现样式时,系统都要求最顶层的全屏视图控制器(通常是根视图控制器)获得其支持的界面方向。此外,仅当此视图控制器从其shouldAutorotate方法返回YES时,才会检索支持的方向。系统将视图控制器支持的方向与应用程序支持的方向(由Info.plist文件或应用程序代理的application:supportedInterfaceOrientationsForWindow:方法确定)相交,以确定是否旋转。

系统通过将应用程序supportedInterfaceOrientationsForWindow:方法返回的值与最顶层全屏控制器的supportedInterfaceOrientations方法返回的值相交来确定是否支持方向。

{@ 3}}方法并未完全弃用。它现在仅在最顶层全屏视图控制器的setStatusBarOrientation:animated:方法返回0时才有效。这使得调用者负责确保状态栏方向一致。

为了兼容性,仍然实现supportedInterfaceOrientations方法的视图控制器不会获得新的自动旋转行为。 (换句话说,他们不会回退使用app,app delegate或Info.plist文件来确定支持的方向。)而是使用shouldAutorotateToInterfaceOrientation:方法来合成将由shouldAutorotateToInterfaceOrientation:方法。

在任何对自身进行全屏演示的视图控制器上不再调用supportedInterfaceOrientationswillRotateToInterfaceOrientation:duration:willAnimateRotationToInterfaceOrientation:duration:方法,例如didRotateFromInterfaceOrientation:

您应该确保您的应用不使用这些方法来管理任何子视图的布局。相反,他们应该使用视图控制器的presentViewController:animated:completion:方法,并使用视图的边界矩形调整布局。

参考 - viewWillLayoutSubviews

希望这可以帮到你