我有一个支持动态设备方向的 OpenGL 应用程序。我可以将设备旋转到 4 个物理方向中的任何一个,一切都按预期工作。
现在我添加了一个模态视图 Controller ,这样您就可以获得一个设置 View (这是非 OpenGL 的)。模态视图 Controller 还支持任何设备方向。
但是,如果我在方向 A(例如纵向)中显示模态视图 Controller 并在方向 B(例如横向右)中关闭它,则在关闭后,OpenGL View 会损坏(纵横比看起来不对)。我必须将设备定向到不同的方向,以便 OpenGL View 自行“校正”。
当模态视图 Controller 被关闭时,应用程序认为它已经处于方向 B,因此它永远不会旋转 OpenGL View 。
如果我在模态视图 Controller 上禁用旋转,那么如果我在方向 A 中呈现模态 Controller ,将设备旋转到方向 B(模态视图 Controller 不再旋转)并关闭 Controller ,OpenGL View 将获取 willRotateToInterfaceOrientation/didRotateFromInterfaceOrientation 并正确定向到方向 B。
有什么方法可以保持模态 Controller 的动态方向,同时让 OpenGL View 在模态 Controller 关闭后也能正确旋转?
谢谢。
最佳答案
我对自定义操作表有类似的问题,并决定最简单的答案是在显示 View 时暂时禁止旋转。您可以在 Apple Notes 应用程序中看到这样的示例,只要显示操作表,方向就会被锁定。
我知道您已经尝试过这个并且它有效,我只是认为您应该将其视为一个有效的解决方案。
否则我不确定如何解决它,您可能需要在模态视图 Controller 中存储方向的任何更改并将它们同时或一次传递回 OpenGL View Controller 关闭设置 View ,然后手动重新渲染。
关于iphone - 显示模态视图 Controller 时设备旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7883936/