我如何使用代码旋转iOS模拟器?

5

有人知道如何旋转 iOS 模拟器(6.0及以上版本)吗?我已经搜索过,但没有找到相关信息。

我想通过代码实现这个功能(而不是手动操作),如果可以通过脚本完成,那么必须从代码中运行。这是否可行?需要一些建议。


由于存在快捷键(Cmd+箭头),您不能使用它吗? - Larme
目的是运行超过2k个测试,所以我更喜欢一个代码解决方案。但是我似乎找不到任何相关资料。 - Just a coder
2个回答

6
在Tests目标(或适当的目标)中添加Supported interface orientations条目,代码如下:

Target Settings

只要条目是横向的,它就会在横向模式下运行。 编辑:
如果我误解了你关于测试的评论,你可能不想继续改变主目标的方向。在这种情况下,您可以复制您的主目标并在那里进行方向更改。 编辑:
有一种未记录的方法可以在代码中强制旋转。虽然这对于测试来说有效,但如果您在提交的应用程序中使用它,可能会被拒绝。
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight animated:YES];

只需在需要使用此方法的地方包含此类别。

@interface UIDevice (MethodsThatAppleWillHitMeWithTheBanStickForUsing)
    -(void)setOrientation:(UIInterfaceOrientation)orientation animated:(BOOL)animated;
    -(void)setOrientation:(UIInterfaceOrientation)orientation;
@end

但是我如何通过代码更改模拟器方向呢?我正在寻找像这样的东西-> setSimulatorOrientationRight(然后模拟器会向右或向左转动等)。 我只需要像按 command+箭头按钮一样的操作方式。 这些测试不是XCode单元测试,它们是自定义测试。 - Just a coder
看我的编辑。如我所说,如果你在生产代码中使用它,这很可能会导致你的应用被拒绝,但对于你的测试来说,它应该足够好。 - Lance
正是我需要的,谢谢。请记住,并非每个构建的应用程序都旨在进入应用商店。在成千上万的应用程序中,有测试环境可用于容纳最终将进入应用商店的应用程序。这个应用程序就是为这样的环境而设计的。它永远不会出现在商店里。感谢您的预防措施 :) - Just a coder

0

在iOS6中,您必须检查几个步骤才能使所有方向都正常工作。即使其中一个缺失,它也无法正常工作。

  1. 如Lance所说,是的,您必须为iPhone或iPad设置支持的方向。

  2. 在您想要设置旋转的控制器中编写此代码。

    -(NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskAll; }

    -(BOOL)shouldAutorotate { return YES; }

根据您想要的方向更改UIInterfaceOrientationMaskAll

  1. 如果您的项目中使用了导航控制器,请确保正确设置!

您不应该收到此错误...(应用程序预计在应用程序启动结束时具有根视图控制器)

正确执行这些步骤,旋转将对您起作用。


抱歉,我理解你的意思。但是我的测试完全不同。我甚至无法访问将要测试的代码 :) 。不过Lance明白了,我只需要通过代码旋转模拟器即可。他的解决方案有效。 - Just a coder

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