的iOS 9 supportedInterfaceOrientations不工作

问题描述:

我有下面的代码UIViewController的iOS 9 supportedInterfaceOrientations不工作

- (BOOL) shouldAutorotate { 
    return NO; 
} 

-(NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationPortrait; 
} 

我没有使用UINavigationController。当显示此UIViewController时,设备仍将旋转到横向。我针对iOS 9,这里有什么问题?

+0

您是否尝试过在xcode项目设置上做同样的事情? –

+0

尝试在xcode中禁用lanscape左,右模式,并只检查肖像模式,看看它是否工作! –

+2

我有其他UIViewControllers,我想允许旋转。只是没有这个具体的一个。我还确保将这个UIViewController设置为我的故事板中的正确类。 – Bryan

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

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

+0

谢谢!你救了我的一天。为了记录,我有这个错误在ios 9.0,但它似乎是固定的ios 9.1 –

+2

布赖恩,我从info.plist文件中删除条目,但我不明白你的意思,通过定义它们在该项目?我仍然有所有的风投都在改变方向。即使我将方法添加到VC以防止它(supportedInterfaceOrientations,shouldAutoRotate等)。我试图一次解决允许横向模式块,并且需要防止需要大量重构的VC风景模式。 – stulevine

+0

完全保存了我的一天,谢谢!删除Info.plist中支持的界面方向,然后只执行shouldAutorotate和supportedInterfaceOrientations为我解决了这个问题。 – user2393462435

我尝试了很多解决方案,但与工作液的正确答案是:

IOS 8和9,不需要编辑info.plist中。

- (BOOL) shouldAutorotate { 
return NO; 
} 



- (UIInterfaceOrientationMask)supportedInterfaceOrientations { 
return (UIInterfaceOrientationPortrait | UIInterfaceOrientationPortraitUpsideDown); 
} 

possible orientation

UIInterfaceOrientationUnknown

该装置的取向不能确定。

UIInterfaceOrientationPortrait

设备处于纵向模式,以保持直立的设备和底部的Home按键。

UIInterfaceOrientationPortraitUpsideDown

设备处于纵向模式,但倒过来,以保持直立的设备,并在顶部的home键。

UIInterfaceOrientationLandscapeLeft

设备处于横向模式,以保持直立的设备,并在左侧的主按钮。

UIInterfaceOrientationLandscapeRight

设备处于横向模式,以保持直立的设备,并在右侧的home键。

+3

您需要将UIInterfaceOrientationMask(而不是UIInterfaceOrientation)返回到supportedInterfaceOrientations(例如UIInterfaceOrientationMaskPortrait) –

我不认为布赖恩的答案是有效的,因为在项目设置中更改方位也会将@ 012r更改为@mrhangz评论。

如果问题是iOS9只,这可能是由于iOS9在iPad上的新功能,称为Split view .The iOS9默认启用尤其是iPad设备Split view,看到苹果文件here

enter image description heresplit view迫使你的应用程序,以支持所有视图一次adoptted.So所有方向,如果你将所有的方位在任何info.plist支持或目标一般设定,然后split view默认情况下,这将忽略方向设置支持虽然supportedInterfaceOrientations在你的viewController并支持所有的方向。

作为撰写的文档,如果您在目标设置中选中了Requires full screen,那么您的应用将不支持split view。现在您可以再次在代码中控制方向。 enter image description here

+0

这适用于我。我需要这个信息,我不知道。 –

+0

没有为我工作。我在我的视图控制器中有' - (BOOL)shouldAutorotate',但它永远不会被调用,并且我有'需要全屏'选中。据我所知,总是被检查过。 –

+0

使用Xcode 9和在iPhoneX上测试,我看到相同的问题。覆盖似乎没有效果,关于plist mods和需要全屏的建议不影响我测试的结果。似乎影响结果的唯一情况是锁定应用程序范围广泛的设置中的旋转。 想知道是否有人发现获得这项工作的“秘密”,或者它仍然是一个谜。 – bduhbya