旋转行为 iOS8 vs iOS9

Posted

技术标签:

【中文标题】旋转行为 iOS8 vs iOS9【英文标题】:Rotation behaviour iOS8 vs iOS9 【发布时间】:2016-07-14 08:11:42 【问题描述】:

我有一个应用程序在所有视图中都锁定为纵向,但 AllButUpsideDown 除外。我使用的方法是在目标常规设置菜单中启用纵向、横向左侧和横向右侧。然后有 UINavigationController 和 UITabBarController 的子类覆盖 func supportedInterfaceOrientations() -> UIInterfaceOrientationMask 并返回 .Portrait

然后在需要能够旋转的视图控制器中,我还覆盖了func supportedInterfaceOrientations() -> UIInterfaceOrientationMask 并返回.AllButUpsideDown。这很好用,因为此视图控制器仅显示为模式,即aViewController.presentViewController()

所有这些在 ios8 上的 iOS9 上都可以正常工作,但是如果我在横向时关闭可旋转视图控制器,UI 将被缩放为横向,尽管它会以纵向显示。

有人知道该怎么办吗?我从一开始就错误地处理这个轮换问题吗?任何干净的修复?解决方法?黑客?

更新

我的问题源于我使用自定义转换来呈现和关闭可以旋转的视图控制器。我试图用一堆不同的解决方案来解决它一段时间。我最接近的解决方案是为我的可旋转视图控制器使用单独的 UIWindow,除了载体栏仍然处于错误方向的问题之外,它可以工作,这是我无法解决的问题。

我采用的解决方案(不是真正的解决方案)是仅在 iOS9+ 中使用自定义过渡,而在 iOS8 上使用默认的当前过渡。

【问题讨论】:

查看***.com/questions/38308919/… 【参考方案1】:

当我从 VC 导航回来时,我遇到了类似的问题,它支持横向到只有纵向的。我没有找到一个干净的解决方法。不建议使用这几行,但如果您不顾一切,可以在即将关闭时强制您的设备方向。

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

【讨论】:

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

未调用 iOS8 接口旋转方法

iOS8中怎样旋转和裁剪相片

iOS 8 自动旋转将图像旋转到屏幕外

iOS8:当手机旋转到横向时如何显示不同的视图控制器?

在 iOS8 中调整旋转工具栏的大小

在 iOS8 中未调用 UIViewController 设备旋转委托方法