【发布时间】:2011-10-25 02:03:43
【问题描述】:
我有一个支持动态设备方向的 OpenGL 应用程序。我可以将设备旋转到 4 个物理方向中的任何一个,一切正常。
现在我添加了一个模态视图控制器,以便您可以获得设置视图(这是非 OpenGL)。模态视图控制器还支持任何设备方向。
但是,如果我在方向 A(例如纵向)中显示模态视图控制器并在方向 B(例如横向-右)中将其关闭,则在它被关闭后,OpenGL 视图已损坏(纵横比看起来错误)。我必须将设备定向到不同的方向,以便 OpenGL 视图自行“纠正”。
当模态视图控制器被关闭时,就像应用认为它已经在方向 B,所以它永远不会旋转 OpenGL 视图。
如果我在模态视图控制器上禁用旋转,那么如果我在方向 A 中显示模态控制器,将设备旋转到方向 B(模态视图控制器不再旋转)并关闭控制器,OpenGL 视图将获得 willRotateToInterfaceOrientation/ didRotateFromInterfaceOrientation 并正确定向到方向 B。
有什么方法可以保持模态控制器的动态方向,但在模态控制器关闭后,OpenGL 视图也能正确旋转吗?
谢谢。
【问题讨论】:
-
您使用哪种机制来检测旋转变化以更新您的 OpenGL 视图?是什么管理可能调整其框架的 OpenGL 视图的呈现?
-
shouldAutorotateToInterfaceOrientation 用于 OpenGL 视图控制器返回 YES。 willRotateToInterfaceOrientation 在 OpenGL 视图控制器上被调用。 layoutSubviews 在 OpenGL 视图上调用,释放 OpenGL 缓冲区。下次调用渲染函数时,OpenGL 缓冲区会以交换的宽度/高度重新创建。
-
当模态框固定为纵向时,您是如何使其工作的?我也有同样的问题
标签: iphone ios uiviewcontroller rotation modalviewcontroller