显示模态视图控制器时设备旋转

时间:2011-10-25 02:03:44

标签: iphone ios uiviewcontroller rotation modalviewcontroller

我有一个支持动态设备定位的OpenGL应用程序。我可以将设备旋转到4个物理方向中的任何一个,一切都按预期工作。

现在我添加了一个模态视图控制器,以便您可以获得设置视图(这是非OpenGL)。模态视图控制器还支持任何设备方向。

但是,如果我在方向A(例如肖像)中呈现模态视图控制器并在方向B(例如横向右侧)中将其关闭,则在它被调暗之后,OpenGL视图被破坏(宽高比看起来错误)。我必须将设备定位到OpenGL视图的不同方向以“纠正”自身。

当模态视图控制器被解除时,它就像应用程序认为它已经在方向B中,因此它不会旋转OpenGL视图。

如果我在模态视图控制器上禁用旋转,那么如果我在方向A中呈现模态控制器,将设备旋转到方向B(模态视图控制器不再旋转)并关闭控制器,则OpenGL视图获取willRotateToInterfaceOrientation / didRotateFromInterfaceOrientation并正确定位到方向B.

有没有办法保留模态控制器的动态方向,但是在解除模态控制器后,OpenGL视图也能正确旋转?

谢谢。

1 个答案:

答案 0 :(得分:1)

我在自定义操作表中遇到了类似的问题,并决定最简单的答案是在显示视图时暂时禁止旋转。您可以在Apple Notes应用程序中看到此示例,只要显示操作表,方向就会被锁定。

我知道你已经尝试了这个并且它有效,我认为你应该认为这是一个有效的解决方案。

我不知道如何解决它,否则,您可能需要在模态视图控制器中存储方向的任何更改,并将它们同时或一次传递回OpenGL视图控制器。解除设置视图,然后手动重新渲染。