【发布时间】: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 上使用默认的当前过渡。
【问题讨论】:
标签: ios objective-c iphone swift uikit