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

Posted

技术标签:

【中文标题】如何使用代码旋转 iOS 模拟器?【英文标题】:How do I rotate the iOS simulator using code? 【发布时间】:2013-03-26 16:19:27 【问题描述】:

有谁知道如何旋转 ios 模拟器(6.0 及以上)?我已经搜索过,但没有找到任何关于此的内容。

我正在尝试通过代码(而不是手动)执行此操作,但如果可以通过脚本完成,则必须从代码运行。这甚至可以做到吗?需要一些建议。

【问题讨论】:

既然有ShortChut(Cmd+箭头),就不能用这个吗? 目的是为了运行超过 2k 的测试,所以我更喜欢代码解决方案。但我似乎在这方面找不到任何东西。 【参考方案1】:

向 Tests 目标(或任何合适的目标)添加支持的界面方向条目,如下所示:

只要唯一的条目是横向条目,它将以横向模式运行。

编辑: 如果我误解了您对测试的评论并且您没有运行单元测试,那么您可能不想继续更改主要目标的方向。在这种情况下,您可以复制您的主要目标并在那里更改方向。

编辑: 有一种未记录的方法可以在代码中强制旋转。虽然这适用于测试,但如果您在提交的应用中使用它可能会导致您的应用被拒绝。

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight animated:YES];

只需在需要使用此方法的任何地方添加此类别即可。

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

【讨论】:

那么如何通过代码改变模拟器的方向呢?我正在寻找类似-> setSimulatorOrientationRight 之类的东西(然后模拟器会向右或向左转等)。我只需要一些东西以与按命令+箭头按钮相同的方式行事。这些测试不是 XCode 单元测试;它们是自定义的。 查看我的编辑。就像我说的那样,如果您在生产代码中使用它,这很可能会导致您的应用被拒绝,但对于您的测试来说,它应该已经足够好了。 正是我需要的人。谢谢。请记住,并非每个构建的应用程序都旨在进入应用程序商店。随着数以千计的应用程序的出现,我们构建了一些测试环境,以适应那些最终会进入应用程序商店的应用程序。这个应用程序就是为这样的环境而设计的。它永远不会在商店里。感谢您的预防:)【参考方案2】:

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

    正如 Lance 所说,是的,您必须为 iphone 或 ipad 设置支持的方向。

    将此代码写入您要为其设置旋转的控制器中。

    -(NSUInteger)supportedInterfaceOrientations 返回 UIInterfaceOrientationMaskAll;

    -(BOOL)应该自动旋转 返回是;

根据您想要的方向更改 UIInterfaceOrientationMaskAll

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

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

正确执行这些步骤,轮换对您有用。

【讨论】:

对不起,我明白你在说什么。但是我的测试完全不同。我什至无法访问我将要测试的代码:)。兰斯明白了,我只需要通过代码旋转模拟器。他的解决方案有效。

以上是关于如何使用代码旋转 iOS 模拟器?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用我的 ios 应用程序中的代码旋转 ipad 屏幕

IOS 6视图旋转问题[重复]

Cocos2D 与 iOS6 错误旋转

iOS5 自定义窗口旋转问题

如何将屏幕设置为不旋转(android)? [复制]

如何在 iOS 上使用 Xamarin 旋转文件中的图像