iOS9:替代UIDevice.currentDevice()。setValue(...)强制定位

时间:2015-09-20 22:22:55

标签: ios screen-orientation ios9

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

只是我,如果不是,是否有人知道另一种选择?

编辑:Portrait和UpsideDown仍然有效。似乎只有横向模式现在导致冻结

编辑2:实际上我认为你可以去肖像< - > UpsideDown和LandscapeLeft< - > LandscapeRight,但不在它们之间

3 个答案:

答案 0 :(得分:16)

添加到Alex的答案:我的经验是Apple只阻止了需要全屏的iOS9 iPad的方向更改。因此,如果您告诉应用程序需要全屏,则轮换应该有效:

enter image description here

但是,我不知道它是否会解决你的SpriteKit冻结,因为根据我的经验,iOS9也引入了大量的SpriteKit错误。

答案 1 :(得分:2)

你是对的。在iOS 9上无法设置设备方向。我认为这是因为iPad上的新分屏模式。现在屏幕上可以同时存在2个应用程序,一个应用程序决定允许哪个方向“不公平”。想象两个强制不同方向的应用程序会发生什么?我认为Apple一般都禁止它,即使它们可以限制iPad非全屏应用程序

答案 2 :(得分:1)

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

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

它适用于iOS 9。