【发布时间】:2012-10-06 00:43:34
【问题描述】:
iOS 6 中对自动旋转的更改似乎使这变得异常困难或不可能。他们似乎在推动子视图控制器不应该覆盖其父视图控制器的自动旋转行为的理念。这使得我很难完成我想做的事情:
- 我有一个必须纵向显示的视图控制器。
- 它以模态方式推送另一个视图控制器,它是一个简单的图像查看器,但我希望这个视图控制器能够旋转到任何纵向或横向方向(原因很明显)
- 当子视图控制器被解除时(无论其当前方向如何),父视图控制器应保持纵向
来自 UIViewController 类参考的相关 Apple 文档
在 iOS 6 中,您的应用支持在应用的 Info.plist 文件中定义的界面方向。视图控制器可以覆盖supportedInterfaceOrientations 方法来限制支持的方向列表。一般情况下,系统只会在窗口的根视图控制器或呈现为填满整个屏幕的视图控制器上调用该方法;子视图控制器使用其父视图控制器为它们提供的窗口部分,并且不再直接参与有关支持哪些旋转的决策。应用程序的方向掩码和视图控制器的方向掩码的交集用于确定视图控制器可以旋转到哪些方向。
我曾考虑过在子视图控制器中使用变换来模拟旋转,但老实说,我觉得应该有更好的方法,并且如果完全可能的话,我想避免这种情况。
似乎为了让任何子视图控制器支持界面方向,它的父视图控制器(以模态或其他方式呈现)现在也必须支持该界面方向。
我在这里遗漏了一些简单的东西吗?这真的像看起来那么荒谬吗?
【问题讨论】:
-
你的问题说你既“推”(暗示导航)但“解雇”(暗示模式呈现)。正如您引用的文档所说,我相信模态演示应该可以工作,只要它“呈现为填满整个屏幕”。
-
你是对的。我应该澄清一下,最终我想通过推送到导航堆栈或模式演示来实现这一点。不过,我目前的困境是专门针对模态演示的。我将它呈现为填满整个屏幕,当我关闭模态视图控制器时,无论supportedInterfaceOrientations 掩码如何,下面的视图都已旋转。我的问题可能是由于我在应用程序的自定义 UINavigationController 中覆盖了 supportedInterfaceOrientations 函数,类似于下面 Robotic Cat 的建议。
标签: ios rotation orientation ios6