首页 文章

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

提问于
浏览
5

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

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

EDIT :Portrait和UpsideDown仍然有效 . 似乎只有Landscape模式现在导致冻结

EDIT 2: 其实我觉得你可以去肖像< - > UpsideDown和LandscapeLeft < - > LandscapeRight,但不能介于它们之间

3 回答

  • 16

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

    enter image description here

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

  • 2

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

  • 1

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

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

    它适用于iOS 9 .

相关问题