iOS9:UIDevice.currentDevice().setValue(…)的替代方法,以强制定向

iOS9:UIDevice.currentDevice().setValue(…)的替代方法,以强制定向,ios,screen-orientation,ios9,Ios,Screen Orientation,Ios9,在我看来,这在iOS9中不再有效。这是基于我的SO研究的强迫方向改变的事实上的方式。它现在冻结了我的SpriteKit游戏 是不是只有我一个人,如果不是的话,还有谁知道另一个选择吗 编辑:纵向和向上向下仍然有效。现在似乎只有横向模式会导致冻结 编辑2:事实上,我认为你可以从上到下,从左到右,从左到右,但不能介于两者之间你是对的。在iOS 9上无法设置设备方向。我认为这是因为iPad上新的分屏模式。现在屏幕上一次可以有两个应用程序,由一个应用程序决定允许哪个方向是“不公平的”。想象两个应用程序强制

在我看来,这在iOS9中不再有效。这是基于我的SO研究的强迫方向改变的事实上的方式。它现在冻结了我的SpriteKit游戏

是不是只有我一个人,如果不是的话,还有谁知道另一个选择吗

编辑:纵向和向上向下仍然有效。现在似乎只有横向模式会导致冻结


编辑2:事实上,我认为你可以从上到下,从左到右,从左到右,但不能介于两者之间

你是对的。在iOS 9上无法设置设备方向。我认为这是因为iPad上新的分屏模式。现在屏幕上一次可以有两个应用程序,由一个应用程序决定允许哪个方向是“不公平的”。想象两个应用程序强制不同的方向,会发生什么?我认为苹果只是在一般情况下禁止它,尽管他们可能会限制iPad的非全屏应用程序。Alex的回答补充道:我的经验是,苹果只阻止iOS9 iPad的方向改变,而iOS9 iPad不要求全屏。因此,如果您告诉应用程序需要全屏显示,则旋转应该可以工作:


但是,我不知道它是否能解决您的SpriteKit冻结问题,因为根据我的经验,iOS9还引入了大量SpriteKit bug。

如果您有两个或多个ViewController,并且希望每个ViewController具有不同的方向,我认为强制VC定向的最佳方法是使用以下代码:

let value = UIInterfaceOrientation.LandscapeLeft.rawValue
// let value = UIInterfaceOrientation.Portrait.rawValue
UIDevice.currentDevice().setValue(value, forKey: "orientation")

它在iOS 9上对我有效。

不仅仅是你。在iOS 9上强制定向也不再适用于我。在某些场景中,我使用在纵向时强制将方向设置为横向。您只需在xcode中设置…iOS9.1,不起作用,因为您必须勾选此复选框(在iOS 9中禁用滑动和拆分屏幕)才能强制将视图设置为特定方向。理想情况下,我希望两者都能做到,但目前强制定向比在屏幕上滑动/翻转更重要,除非你知道一种同时拥有这两种功能的方法?今日英雄。谢谢它为我节省了一些时间。为什么它在iPad的ios10中还能工作?ipadios10仍然具有相同的功能,即分屏模式