方向无法正常工作

时间:2012-10-05 15:17:58

标签: ios orientation ios6 uiinterfaceorientation

我在使应用程序的方向正常运行时遇到了一些麻烦。简而言之,我有两个视图控制器,我将在我的应用程序之间切换。 ViewControllerA只应以纵向或颠倒方式显示。 ViewControllerB可以以四个方向中的任何一个显示。

这似乎应该非常简单。我不确定该怎么做,但我想如果我只是摆弄shouldAutorotateshouldAutorotateToInterfaceOrientation:supportedInterfaceOrientations那么我应该得到我想要的东西。出于某种原因,info.plist中的界面方向完全覆盖了视图控制器中的任何代码。如果我只允许info.plist中的肖像但允许我的viewcontroller中的所有内容,则不会旋转。并且唯一被调用的方法是supportedInterfaceOrientations(我返回UIInterfaceOrientationMaskAll)。同样,如果我允许info.plist中的每个方向,旋转设备也会旋转viewController,即使在我的代码中我禁止任何非纵向的方向。

我真的不知道我做错了什么。有人可以帮忙,并向我展示我的方向代码应该是ViewControllerAViewControllerB应该是什么样的代码片段,以及应该在info.plist中选择哪些方向。谢谢!

3 个答案:

答案 0 :(得分:0)

关于功能

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

您应该将true返回到要旋转的所有界面,假设您只想要肖像

return interfaceOrientation == UIInterfaceOrientationPortrait;

如果你想要除了upsideDown之外的所有东西

return !(interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown);

在plist上,它设置了更多的全局值,因此如果此选项不可用,则代码将无法运行。您必须在plist上授予它才能在两个视图中执行此操作。

希望这有帮助。

答案 1 :(得分:0)

在iOS 6中不推荐使用shouldAutorotateToInterfaceOrientation方法。而是在所有当前的全屏视图控制器中实现supportedInterfaceOrientations和shouldAutorotate方法。

还要确保您的应用在主窗口上执行setRootViewController。

答案 2 :(得分:0)

在你的AppDelegate.m上试试这个

// [window_addSubview:navController_.view];

[window_ setRootViewController:navController _];