我在使应用程序的方向正常运行时遇到了一些麻烦。简而言之,我有两个视图控制器,我将在我的应用程序之间切换。 ViewControllerA
只应以纵向或颠倒方式显示。 ViewControllerB
可以以四个方向中的任何一个显示。
这似乎应该非常简单。我不确定该怎么做,但我想如果我只是摆弄shouldAutorotate
,shouldAutorotateToInterfaceOrientation:
和supportedInterfaceOrientations
那么我应该得到我想要的东西。出于某种原因,info.plist
中的界面方向完全覆盖了视图控制器中的任何代码。如果我只允许info.plist
中的肖像但允许我的viewcontroller中的所有内容,则不会旋转。并且唯一被调用的方法是supportedInterfaceOrientations
(我返回UIInterfaceOrientationMaskAll
)。同样,如果我允许info.plist
中的每个方向,旋转设备也会旋转viewController,即使在我的代码中我禁止任何非纵向的方向。
我真的不知道我做错了什么。有人可以帮忙,并向我展示我的方向代码应该是ViewControllerA
,ViewControllerB
应该是什么样的代码片段,以及应该在info.plist
中选择哪些方向。谢谢!
答案 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 _];