iOS 9 supportedInterfaceOrientations不起作用

Bry*_*yan 21 cocoa-touch objective-c ios

我有UIViewController以下代码:

- (BOOL) shouldAutorotate {
     return NO;
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationPortrait;
}
Run Code Online (Sandbox Code Playgroud)

我没有使用UINavigationController.当这个UIViewController被显示,该装置仍将旋转为横向.我的目标是iOS 9,这里的问题是什么?

Bry*_*yan 33

所以问题在于我已经定义了允许的方向,info.plist其中显然覆盖了整个项目中其他任何地方所做的任何事情.

为了解决这个问题,我删除了条目info.plist并在项目设置中定义了它们.现在一切都按预期工作.

  • 请注意,从info.plist中删除方向支持将导致iOS9上载错误(ITMS 90474),请参阅:http://stackoverflow.com/questions/32728711/xcode-7-error-itms-90474-invalid-bundle-cant -submit到苹果 (5认同)
  • 当您删除`info.plist`中的方向时,它也会更改项目设置. (5认同)
  • Bryan,我从info.plist文件中删除了条目,但是我不明白你在项目中定义它们是什么意思?我仍然让我所有的风险投资改变方向.即使我将方法添加到VC来防止它(supportedInterfaceOrientations,shouldAutoRotate等).我正在尝试一次解决允许横向模式块的问题,并且需要为需要大量重构的VC阻止横向模式. (2认同)

Xin*_*ng 23

我不认为布莱恩的答案是有效的,因为改变项目设置中的方向也会改变info.plist@mrhangz的评论.

如果问题只是iOS9,那可能是由于iOS9中iOS9的新功能所称Split view.Split view默认情况下iOS9启用特别是iPad设备,请参阅此处的 Apple文档.

在此输入图像描述split view强制你的应用程序,以支持所有视图一次adoptted.So所有方向,如果你设置的所有方位支持两种 info.plist或目标一般设定,然后split view被默认支持,这将忽略方向设置,虽然supportedInterfaceOrientations在你的viewController,并支持所有的方向.

在编写文档时,如果您签Requires full screen入目标设置,那么您的应用程序将不支持split view.现在您可以再次控制代码中的方向. 在此输入图像描述

  • 没有为我工作。我的视图控制器中有 `-(BOOL)shouldAutorotate`,但它从未被调用,并且我选中了“需要全屏”。据我所知,一直都被检查过。 (2认同)