iOS应用程序不会在iPhone上旋转,但会在iPad上旋转

时间:2013-02-08 14:28:24

标签: ios objective-c xamarin.ios

我制作了我的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模拟器会自动转为横向,即使我旋转它也会保留横向渲染。

可能导致这种情况的原因是什么?我也试过允许两种景观旋转,但没有骰子。

1 个答案:

答案 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方法来确定   设备方向。