iPad模拟器旋转

11

我正在iPad模拟器上测试一个应用程序,希望该应用程序能够在模拟器的当前位置启动,但每次运行该应用程序时,模拟器都会旋转到纵向模式。

有没有办法停止这种行为?

谢谢。

= = = =

最后一次编辑:我现在发现,如果在shouldAutorotateToInterfaceOrientation函数中返回NO,则问题会停止。但这是不合理的,因为shouldAutorotateToInterfaceOrientation应该将界面旋转以匹配iPad的位置,而不是相反。

6个回答

4

在模拟器中运行GHUnit测试应用程序时,我遇到了这个问题。我通过将以下内容添加到info.plist文件中来解决它:

<key>UISupportedInterfaceOrientations~ipad</key>
<array>
  <string>UIInterfaceOrientationPortrait</string>
  <string>UIInterfaceOrientationPortraitUpsideDown</string>
  <string>UIInterfaceOrientationLandscapeLeft</string>
  <string>UIInterfaceOrientationLandscapeRight</string>
</array>

如果您使用Xcode的plist编辑器进行编辑,请确保已开启“显示原始键/值”选项。


没错,这也解决了我的问题。 - Kris Van Bael
问题出在顺序上。如果您的UIInterfaceOrienationPortrait不是第一个,它将更改iPhone/iPad的初始方向。我遇到了这个问题,是因为在信息项目设置选项卡上按下打开/关闭方向的按钮。通过删除.plist中的方向设置,将其放回正确的顺序。 - Paul Solt

2
iPad支持多个启动图像(而不是iPhone的单个default.png),以便应用程序可以在所有旋转中启动。我猜测你丢失了新的那些图像(如default-landscape.png),因此当应用程序加载时,它只能找到纵向加载屏幕,从而触发旋转(模拟器通过旋转到纵向响应)。 当您返回“NO”的shouldAutorotateToInterfaceOrientation时,它仍然找不到横向图像,但不允许旋转生效? 具体请看这里

1
我没有启动图,应用程序轻便且启动速度快。问题是苹果报告说,在设备处于横向时启动应用程序时会出现错误。他们说应用程序在纵向模式下启动。由于我住在欧洲,外国开发人员显然被苹果忽视,我没有真正的设备进行测试。因此,我试图在模拟器上查看错误。然后我旋转模拟器并启动应用程序。立即模拟器就回到了纵向模式,这非常令人恼火,特别是因为我没有设置任何方向。 - Duck
这是一个.plist文件的问题。如果UISupportedInterfaceOrientations的顺序不同,设备将在启动时自动旋转到不同的方向。请参见Hugh的答案。 - Paul Solt

1

一旦将模拟器设置为横屏,只要不退出模拟器,它就会一直保持在横屏状态。您可以重新运行应用程序,它将以横屏模式启动(好吧,除了内部初始状态为竖屏)。


1
谢谢,但这不适用于我。我没有将应用程序设置为纵向,并且模拟器始终以纵向启动。即使我将应用程序设置为横向,也没有任何变化。它仍然是纵向的。相当烦人。 - Duck
我现在发现,如果在shouldAutorotateToInterfaceOrientation上返回NO,问题就会停止。但这是疯狂的,因为shouldAutorotateToInterfaceOrientation应该旋转界面以匹配iPad的位置,而不是相反。 - Duck
很遗憾,什么也做不了。不过iPad模拟器运行良好。 - Mugunth

1

之前没有尝试过...但是也许如果您通过添加

<key>UIInterfaceOrientation</key> <string>UIInterfaceOrientationPortrait</string>

更改.plist文件,我知道它可以在iPhone上运行。


谢谢,但是苹果公司正在限制设置特定方向的应用。你应该在应用启动时发现设备方向并相应地设置应用方向。这很美妙,但有一个小问题,就是方向通知非常糟糕,只有在旋转设备时才能检测到方向,而不是设备没有旋转时的方向。更不用说通知需要时间来工作,你必须延迟应用程序直到你有一个可靠的读数... - Duck
即使使用加速度计来发现方向也不太可靠,因为需要时间才能获得可信的读数。更不用说模拟器没有加速度计,并且在视图旋转时自行旋转了。一团糟。 - Duck
嗯...问题出现在真实的东西上吗? - user333593

1

我想我明白了!

如果你关闭模拟器(例如按下Cmd+Q),那么它总是以竖屏模式启动。

但是,如果你通过在模拟器上按下主页按钮来关闭应用程序,那么它会记住下次启动应用程序时的最后一个方向。


1

确认一下,Mike,我同意你上面说的一切,但你似乎可能从错误的角度来看待它。

iPad 的关键之一(根据苹果公司)是应用程序在任何方向上都应该是完全可用的。如果您阅读苹果公司有关如何充分利用 iPad UI 的说明书,它在那里详细介绍了这一点。

如果您使用“cmd”+左/右箭头,您应该能够定位模拟器。这将使您能够模拟用户在与您编码不符的方向上启动应用程序时所经历的情况。

我建议您撤销您所做的代码修改(shouldAutorotateToInterfaceOrientation - NO),并将您的应用程序编码为可以在任何方向上显示。如果您必须只编写一个方向,则我怀疑用户将被迫旋转设备以纠正问题。

我知道您渴望测试您的横向应用程序,但我不知道 iPad 模拟器是否可以强制以横向方式启动,除非您提到的解决方法,就像您已经建议的那样,这样做没有意义。我怀疑您只能使用“cmd”+“左/右”箭头。


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