我制作了我的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设置了右横屏,这样闪屏才能正确显示(似乎你不能在iPhone上为左横屏和右横屏分别设置闪屏)
该应用程序运行良好,但在朋友的iPhone上,该应用程序运行在纵向模式下,不能旋转到任何一个横向模式。旋转锁定已关闭。
我没有从我的代码中做任何特别的事情来支持旋转,因为仅仅是设置我的Info.plist就可以在我的iPad上完美地工作。
iPhone模拟器自动转换为景观,并保留景观渲染,即使我旋转它。
这可能是什么原因造成的?我也试着允许两个景观旋转,但没有骰子。
发布于 2013-02-09 03:09:52
ios6引入了处理方向改变的新方法--我猜你朋友的iphone正在运行ios5。请参阅UIViewController docs以了解如何处理这两个版本:
处理视图旋转
在iOS 6中,您的应用程序支持在应用程序的Info.plist文件中定义的界面方向。视图控制器可以重写supportedInterfaceOrientations方法来限制支持的方向列表。通常,系统仅在窗口的根视图控制器或呈现以填充整个屏幕的视图控制器上调用此方法;子视图控制器使用父视图控制器为其提供的窗口部分,而不再直接参与有关支持哪些旋转的决策。应用程序的方向遮罩和视图控制器的方向遮罩的交集用于确定视图控制器可以旋转到哪些方向。
您可以覆盖计划以特定方向全屏显示的视图控制器的preferredInterfaceOrientationForPresentation。
在iOS 5和更早版本中,UIViewController类仅在纵向模式下显示视图。要支持其他方向,必须覆盖shouldAutorotateToInterfaceOrientation:方法,并为子类支持的任何方向返回YES。如果正确配置了视图的自动调整大小属性,那么这可能就是您要做的全部工作。但是,UIViewController类为您提供了额外的挂钩,以便根据需要实现额外的行为。通常,如果您的视图控制器打算用作子视图控制器,那么它应该支持所有的接口方向。
当可见视图控制器发生旋转时,将在旋转期间调用willRotateToInterfaceOrientation:duration:,willAnimateRotationToInterfaceOrientation:duration:,和didRotateFromInterfaceOrientation:方法。在父视图调整大小和位置后,也会调用viewWillLayoutSubviews方法。如果发生方向更改时视图控制器不可见,则永远不会调用旋转方法。但是,当视图变为可见时,将调用viewWillLayoutSubviews方法。此方法的实现可以调用statusBarOrientation方法来确定设备方向。
https://stackoverflow.com/questions/14774740
复制相似问题