iOS9:替代 UIDevice.currentDevice().setValue(...) 强制方向
Posted
技术标签:
【中文标题】iOS9:替代 UIDevice.currentDevice().setValue(...) 强制方向【英文标题】:iOS9: Alternative to UIDevice.currentDevice().setValue(...) to force orientation 【发布时间】:2015-09-20 22:22:55 【问题描述】:在我看来,这在 ios9 中不再起作用了。这是基于我的 SO 研究强制改变方向的事实上的方式。它现在冻结了我的 SpriteKit 游戏。
只有我一个人吗,如果没有,有人知道替代方案吗?
编辑:Portrait 和 UpsideDown 仍然有效。现在似乎只有横向模式会导致冻结
编辑 2: 实际上我认为你可以使用 Portrait UpsideDown 和 LandscapeLeft LandscapeRight,但不能在它们之间
【问题讨论】:
不只是你。在 iOS 9 上,强制方向也不再适用于我。在某些情况下,我习惯于在纵向时强制方向为横向。 只需要在xcode中设置... iOS9.1,也不行 【参考方案1】:补充亚历克斯的回答:我的经验是,Apple 只阻止不需要全屏的 iOS9 iPad 的方向更改。因此,如果您告诉应用程序需要全屏,旋转应该可以工作:
但是,我不知道它是否会解决您的 SpriteKit 冻结问题,因为根据我的经验,iOS9 也引入了很多 SpriteKit 错误。
【讨论】:
遗憾的是,您必须勾选此复选框(在 iOS 9 中禁用滑动和分屏)才能强制视图进入特定方向。理想情况下,我希望能够同时做到这两点,但目前强制方向比滑动/分屏更重要,除非你知道两者兼有的方法? 今天的英雄。谢谢!它为我节省了一些时间。【参考方案2】:你是对的。在 iOS 9 上无法设置设备方向。我认为这是因为 iPad 上新的分屏模式。现在屏幕上可以同时有 2 个应用程序,一个应用程序决定允许哪个方向是“不公平的”。想象一下两个强制不同方向的应用程序,会发生什么?我认为 Apple 只是一般禁止它,即使他们可能会限制 iPad 非全屏应用程序
【讨论】:
为什么它仍然在 iPad 上的 iOS 10 中运行? iPad ios 10 依然有同样的功能 SplitScreen Mode【参考方案3】:如果你有两个或多个 ViewControllers,并且你希望每个 ViewControllers 有不同的方向,我认为强制 VC 方向的最好方法是使用下面的这些代码:
let value = UIInterfaceOrientation.LandscapeLeft.rawValue
// let value = UIInterfaceOrientation.Portrait.rawValue
UIDevice.currentDevice().setValue(value, forKey: "orientation")
它适用于 iOS 9。
【讨论】:
以上是关于iOS9:替代 UIDevice.currentDevice().setValue(...) 强制方向的主要内容,如果未能解决你的问题,请参考以下文章