uiscreen SWIFT 的旋转

Posted

技术标签:

【中文标题】uiscreen SWIFT 的旋转【英文标题】:Rotation of uiscreen SWIFT 【发布时间】:2016-05-18 15:05:25 【问题描述】:

我在 info.plist 文件中禁用了除纵向模式之外的所有方向模式,因为我不希望应用旋转。但是我希望一个视图控制器仅处于横向模式。我可以在视图控制器的类中以编程方式更改方向吗?或者我可以在 info.plist 中禁用自动旋转但启用纵向和横向模式吗?

我也知道我可以通过UIDevice.currentDevice().orientation.isLandscape检查手机的方向

但是当你以不同的方式握住手机时,有没有一种方法会被执行?

【问题讨论】:

【参考方案1】:

如果您只想以与 info.plist 中大多数其他 VC 不同的方向呈现一个 VC,则必须设置一组包含所有支持的方向的值。 为避免 VC 以特定方向旋转的可能性,您应该覆盖

- shouldAutorotate
- supportedInterfaceOrintation
- preferredInterfaceOrientationForPresentation

你会发现这个答案也很有用,一个实际的例子How to force view controller orientation in ios 8?

【讨论】:

是否可以扩展 UIViewController 并为这个视图控制器单独覆盖方法? 如果您阅读了我发布的链接,用户在回答中解释了如何通过覆盖应用程序委托中的方法来做到这一点 是否可以在 info.plist 中禁用自动旋转? 但是当应用程序处于纵向时,我无法以编程方式切换到横向 正确,如果你想管理多个方向,正如我已经说过的,你必须选择你想要支持的所有方向,并且使用我上面写的方法进行细粒度控制。【参考方案2】:

在 UIViewController.h 中查看 shouldAutorotate 和 supportedInterfaceOrientations 方法。

【讨论】:

我尝试使用supportedInterfaceOrientations 方法,但视图没有旋转。此外,当只允许肖像时,应该自动旋转方法也不起作用。还是他们只是一起工作?

以上是关于uiscreen SWIFT 的旋转的主要内容,如果未能解决你的问题,请参考以下文章

iOS8.0(和 8.1)上第二个 UIScreen 的自动旋转问题

Xcode / Swift / UIScreen.main.bounds.size.height 返回 0

记一个swift UIscreen界面问题

UIScreen 亮度上的 Swift 选择器在调用时返回 UIDevice

UIScreen.mainScreen().nativeBounds.height 无法使用 Xcode 7/Swift 2,目标 iOS7

“UIScreen”没有成员“main”