无法在iOS9中强制应用仅限纵向

时间:2016-01-02 13:06:30

标签: ios uiinterfaceorientation

我需要我的应用仅支持纵向方向。但升级到iOS9后,方向设置似乎没有效果。我已经通过了this回答,这是我的应用设置:

orientation settings

但仍然应用程序进入景观。我做错了什么?

3 个答案:

答案 0 :(得分:5)

请查看Info.plist以获取"支持的界面方向"。 它必须显示肖像符合您的要求。有时它不会更新为常规选项卡中的项目设置。如果您在此处找到横向方向,请将其删除。

<key>UISupportedInterfaceOrientations</key>
<array>
    <string>UIInterfaceOrientationPortrait</string>
</array>

enter image description here

答案 1 :(得分:2)

iOS9中存在某种错误。它完全忽略了plist文件方向设置。所以我不得不将这个代码添加到我的每个UIViewControllers中以获得纵向方向。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    if (interfaceOrientation == UIInterfaceOrientationPortrait)
    {
        return YES;
    }
    else
    {
        return NO;
    }
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationPortrait;
}

#if __IPHONE_OS_VERSION_MAX_ALLOWED < 90000
- (NSUInteger)supportedInterfaceOrientations
#else
- (UIInterfaceOrientationMask)supportedInterfaceOrientations
#endif
{
    return UIInterfaceOrientationMaskPortrait;
}

答案 2 :(得分:2)

看起来我发现了问题。当我查看info.plist的 source 时,这就是我发现的:

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

不知道UISupportedInterfaceOrientations~ipad密钥是如何形成的。在作为属性列表查看时,它最初未显示,但在作为源打开并保存后开始显示在属性列表中。

此外,似乎现在可以在常规标签中设置此功能。感谢SamBtechnerd让我走上了正确的道路。

PS:我不确定这是一个错误还是预期的行为,所以我欢迎任何有关此问题的见解。