首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS应用程序不会在iPhone上旋转,但会在iPad上旋转

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

Stack Overflow用户
提问于 2013-02-08 22:28:24
回答 1查看 1.2K关注 0票数 1

我制作了我的gles应用程序,并在我的iPad上进行了测试。它应该只在横向模式下工作,所以我的Info.plist是这样的

代码语言:javascript
复制
<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模拟器自动转换为景观,并保留景观渲染,即使我旋转它。

这可能是什么原因造成的?我也试着允许两个景观旋转,但没有骰子。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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方法来确定设备方向。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14774740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档