iOS 5中使用Storyboards的UIView在iPad设备旋转时不会旋转内容

5

我刚刚开始使用Storyboards和iOS5.1。我正在构建一个使用导航控制器作为其根控制器的应用程序,并设计为在横向方向下使用(这是一个企业内部应用程序)。

我创建了一个单视图,它正常工作:当模拟器改变方向时,内容会正确地旋转以保持“正面朝上”。

然后我添加了一个新视图,但这个视图完全不旋转;当设备旋转时,内容保持纵向方向(因此是横向的)。

我查看了两个UIViewControllers和UIViews的设置,但没有发现它们之间的任何区别。您有什么想法可以帮助我解决问题吗?

2个回答

9
首先,Storyboard中的每个UIViewController都必须与一个类相关联。创建一个从UIViewController继承的新类,然后,在Storyboard中点击uiviewcontroller,在该控制器的底部,单击右侧框,并在类检查器中,用您创建的新类的名称替换UIViewController。
然后,请确保在您创建的每个视图控制器类中实现该方法。
-(BOOL)shouldAutoRotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}

只需在每个视图控制器中使这个删除方法返回YES,以确保它们的所有视图都可以在任何方向上旋转。你做到了吗?

1
我简直不敢相信我会忘记那个;被Storyboard的吸引力迷住了...谢谢! - Christophe
从技术上讲,你不必为每个场景都拥有一个视图控制器子类,但通常情况下你会这样做。 - Jon Hess
2
请注意,如果您正在使用Xcode 4.5但是部署到iOS 5.x,则此方法将不再自动生成在UIViewController子类中(因为它已经过时于iOS 6.x),因此您必须手动添加它以使其在iOS 5.1下正常工作。 - David Hunt

0

这个问题也困扰着我。我的应用程序在iPad模拟器上可以旋转,但在实际的iPad上却不能旋转,非常奇怪。我有一个带有三个选项卡的UITabBarController。所有连接到选项卡的三个控制器都有shouldAutoRotateToInterfaceOrientation方法,但只有其中两个(通过导航控制器,5步后)没有。我也将该方法添加到了这些控制器中,现在它可以旋转了。

仅供参考。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接