的iOS 9 supportedInterfaceOrientations不工作
我有下面的代码UIViewController
:的iOS 9 supportedInterfaceOrientations不工作
- (BOOL) shouldAutorotate {
return NO;
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationPortrait;
}
我没有使用UINavigationController
。当显示此UIViewController
时,设备仍将旋转到横向。我针对iOS 9,这里有什么问题?
所以问题是我已经定义了允许的方向info.plist
这显然会覆盖你在整个项目中任何其他地方做的任何事情。
要解决此问题,我从info.plist
中删除了条目,并在项目设置中定义了它们。现在一切都按预期工作。
谢谢!你救了我的一天。为了记录,我有这个错误在ios 9.0,但它似乎是固定的ios 9.1 –
布赖恩,我从info.plist文件中删除条目,但我不明白你的意思,通过定义它们在该项目?我仍然有所有的风投都在改变方向。即使我将方法添加到VC以防止它(supportedInterfaceOrientations,shouldAutoRotate等)。我试图一次解决允许横向模式块,并且需要防止需要大量重构的VC风景模式。 – stulevine
完全保存了我的一天,谢谢!删除Info.plist中支持的界面方向,然后只执行shouldAutorotate和supportedInterfaceOrientations为我解决了这个问题。 – user2393462435
我尝试了很多解决方案,但与工作液的正确答案是:
IOS 8和9,不需要编辑info.plist中。
- (BOOL) shouldAutorotate {
return NO;
}
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
return (UIInterfaceOrientationPortrait | UIInterfaceOrientationPortraitUpsideDown);
}
UIInterfaceOrientationUnknown
该装置的取向不能确定。
UIInterfaceOrientationPortrait
设备处于纵向模式,以保持直立的设备和底部的Home按键。
UIInterfaceOrientationPortraitUpsideDown
设备处于纵向模式,但倒过来,以保持直立的设备,并在顶部的home键。
UIInterfaceOrientationLandscapeLeft
设备处于横向模式,以保持直立的设备,并在左侧的主按钮。
UIInterfaceOrientationLandscapeRight
设备处于横向模式,以保持直立的设备,并在右侧的home键。
您需要将UIInterfaceOrientationMask(而不是UIInterfaceOrientation)返回到supportedInterfaceOrientations(例如UIInterfaceOrientationMaskPortrait) –
我不认为布赖恩的答案是有效的,因为在项目设置中更改方位也会将@ 012r更改为@mrhangz评论。
如果问题是iOS9只,这可能是由于iOS9在iPad上的新功能,称为Split view
.The iOS9默认启用尤其是iPad设备Split view
,看到苹果文件here。
的
split view
迫使你的应用程序,以支持所有视图一次adoptted.So所有方向,如果你将所有的方位在任何info.plist
支持或目标一般设定,然后split view
默认情况下,这将忽略方向设置支持虽然supportedInterfaceOrientations
在你的viewController并支持所有的方向。
作为撰写的文档,如果您在目标设置中选中了Requires full screen
,那么您的应用将不支持split view
。现在您可以再次在代码中控制方向。
这适用于我。我需要这个信息,我不知道。 –
没有为我工作。我在我的视图控制器中有' - (BOOL)shouldAutorotate',但它永远不会被调用,并且我有'需要全屏'选中。据我所知,总是被检查过。 –
使用Xcode 9和在iPhoneX上测试,我看到相同的问题。覆盖似乎没有效果,关于plist mods和需要全屏的建议不影响我测试的结果。似乎影响结果的唯一情况是锁定应用程序范围广泛的设置中的旋转。 想知道是否有人发现获得这项工作的“秘密”,或者它仍然是一个谜。 – bduhbya
您是否尝试过在xcode项目设置上做同样的事情? –
尝试在xcode中禁用lanscape左,右模式,并只检查肖像模式,看看它是否工作! –
我有其他UIViewControllers,我想允许旋转。只是没有这个具体的一个。我还确保将这个UIViewController设置为我的故事板中的正确类。 – Bryan