【问题标题】:Force orientation change in container view controller容器视图控制器中的强制方向更改
【发布时间】:2012-02-28 16:00:12
【问题描述】:

我创建了一个容器视图控制器,我可以在其中嵌入一个子视图控制器(使用新的 iOS 5 API)。当嵌入仅支持纵向的子视图控制器并且设备当前处于横向时,我想强制旋转为纵向。

我发现[UIViewController attemptRotationToDeviceOrientation] 方法几乎可以做到这一点,但并不完全如此。它实际上以相反的方式工作,因此如果嵌入了子视图控制器,并且设备处于纵向,我可以旋转到横向(但视图控制器将保持纵向),然后关闭嵌入式视图控制器,它会自动旋转到横向。

嵌入不支持当前方向的子视图控制器时,有什么方法可以强制容器视图控制器旋转?

【问题讨论】:

  • 我认为有办法。如果我完全理解的话,我想我过去曾使用过类似的东西。您是否尝试过类似 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // 重写以允许任何方向。如果(嵌入孩子)返回否;返回是; }
  • 是的,我目前正在这样做。问题是,嵌入子视图控制器时不会调用该回调。仅在旋转时,或在与设备方向不匹配的方向上调用 [UIViewController attemptRotationToDeviceOrientation] 时。

标签: iphone ios ios5 uiviewcontroller orientation


【解决方案1】:

我敢打赌这不是一个令人满意的答案,但是......我认为你必须放弃旋转并移动到 90 度的仿射变换(子视图)。旋转是用户的物理行为,尽管我们可能无法实际旋转设备。但是,转换在您的能力范围内。一旦用户遵守并将设备旋转到正确方向,您始终可以将其设置回身份。

玩得开心,祝你好运,

达米安

【讨论】:

  • 你会在那个赌注上赢钱。不过,我对此研究得越多,我就越认为你是对的。
  • 当现实符合我的喜好时,我很高兴。否则,我工作。