我制作了我的gles应用程序,并在我的iPad上进行了测试。它应该只适用于横向模式,所以我有Info.plist
这样的
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
我只为iPhone设置了landscape-right,因此启动画面显示正确(似乎你无法为iPhone上的横向右侧和横向左侧设置单独的启动画面)
该应用程序运行正常,但在朋友的iPhone上,该应用程序以纵向模式运行,并且不会旋转到任何一个横向。旋转锁定已关闭。
我没有特别从我的代码中做任何事情来支持轮换,因为只需将我的Info.plist
设置为完美地在我的iPad上运行。
iPhone模拟器会自动转为横向,即使我旋转它也会保留横向渲染。
可能导致这种情况的原因是什么?我也试过允许两种景观旋转,但没有骰子。
答案 0 :(得分:3)
ios6引入了处理方向变化的新方法 - 我猜你朋友的iphone正在运行ios5。请参阅UIViewController docs以了解如何处理这两个版本:
处理视图轮播
在iOS 6中,您的应用支持在您的应用中定义的界面方向 app的Info.plist文件。视图控制器可以覆盖 supportedInterfaceOrientations方法限制支持的列表 取向。通常,系统仅在根上调用此方法 视图控制器的窗口或视图控制器呈现填充 整个屏幕;子视图控制器使用的部分 由父视图控制器为它们提供的窗口不再 直接参与有关轮换的决定 支持的。应用程序的方向掩码和视图的交集 控制器的方向掩码用于确定哪些方向 视图控制器可以旋转到。
您可以覆盖preferredInterfaceOrientationForPresentation 一个视图控制器,旨在全屏显示 具体方向。
在iOS 5及更早版本中,UIViewController类在其中显示视图 仅限肖像模式。要支持其他方向,您必须这样做 覆盖shouldAutorotateToInterfaceOrientation:方法并返回 对于您的子类支持的任何方向都是YES。如果自动调整 视图的属性配置正确,可能就是全部 得做。但是,UIViewController类提供了额外的功能 您可以根据需要实现其他行为。通常, 如果您的视图控制器旨在用作子视图 控制器,它应该支持所有的接口方向。
当可见视图控制器发生旋转时, willRotateToInterfaceOrientation:时间:, willAnimateRotationToInterfaceOrientation:duration:,和 didRotateFromInterfaceOrientation:在调用期间调用方法 回转。 viewWillLayoutSubviews方法也在调用之后调用 视图由其父级调整大小和位置。如果是视图控制器 当方向发生变化时不可见,然后是旋转 永远不会调用方法。但是,viewWillLayoutSubviews方法 在视图变得可见时调用。你执行这个 方法可以调用statusBarOrientation方法来确定 设备方向。