iOS9:替代UIDevice.currentDevice()。setValue(…)来强制方向

在我看来这不适用于iOS9。 这是根据我的SO研究强制改变方向的事实上的方法。 它现在冻结了我的SpriteKit游戏。

是不是只有我,如果没有人知道另一个select?

编辑 :肖像和UpsideDown仍然工作。 似乎只有景观模式现在导致冻结

编辑2:其实我认为你可以去肖像< – > UpsideDown和LandscapeLeft < – > LandscapeRight,但不能在他们之间

添加到Alex的答案:我的经验是,苹果只阻止不需要全屏iOS9 iPad的方向改变。 所以,如果你告诉应用程序需要全屏,旋转应该工作:

在这里输入图像说明

然而,我不知道是否会解决你的SpriteKit冻结,因为在我的经验iOS9还引入了大量的SpriteKit错误。

你是对的。 在iOS 9上不可能设置设备方向。我认为这是因为iPad上的新的SplitScreen模式。 现在可以在屏幕上一次显示2个应用程序,并且对于一个应用程序决定允许哪个方向是“不公平的”。 想象两个强制不同方向的应用程序,会发生什么? 我想苹果公司只是禁止它,即使他们可以限制到iPad非全屏应用程序

如果你有两个或两个以上的ViewController,并且你希望每个ViewController有不同的方向,我认为强制VC的方向的最好方法是使用下面的代码:

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

它适用于我在iOS 9。