我正在测试一个OpenGL概念,因此我的应用程序包含一个带有OpenGL视图的窗口,而不是其他任何内容。
我遇到的问题是,在以模态方式呈现UIViewController之后,OpenGL视图中的内容会被垂直拉伸(加倍?)。
该应用程序仅限于横向右侧,我现在只是绘制立方体来测试它。
另一个奇怪的事情是,当我一段时间(在iOS 5或6上)测试这个时,Game Center排行榜视图控制器会导致这种情况发生。现在它没有 - 它可以在不影响底层OpenGL视图的情况下显示和解除 - 但是我显示和关闭的任何我自己的UIViewControllers都会导致问题出现。
我可以通过跟踪显示视图控制器的时间来处理它,然后相应地缩放OpenGL内容,但这看起来非常糟糕 - 在我看来,内容根本不应该开始拉伸。
编辑:所以我记录了包含视图和OpenGL视图的帧,这就是我得到的:
Frame before (this view): {{0, 0}, {320, 568}}
Frame before (glview): {{0, 0}, {568, 320}}
Frame after (this view): {{0, 0}, {568, 320}}
Frame after (glview): {{0, 0}, {568, 320}}
因此,您可以看到容器视图的宽度和高度翻转。我仍然不知道如何解决这个问题 - 再次设置两个视图的框架不起作用,我不知道还有什么可以尝试。
答案 0 :(得分:0)
好吧,所以我不确定为什么框架会翻转它的宽度和高度,但我修好了,是的!
设置GL视图(在viewWillAppear上完成,因此在显示和关闭另一个视图控制器时开始出现问题),使用容器视图的框架设置相机以设置纵横比,如下所示:CGSize layerSize = self.view.layer.frame.size;
此视图是翻转其宽度和高度的视图,因此当再次设置GL视图时,宽高比会导致内容被拉伸。由于我知道我的GL视图始终是屏幕的整个宽度和高度,我通过使用屏幕边界来设置相机/纵横比来修复它:CGSize layerSize = [UIScreen mainScreen].bounds.size;
现在它完美无缺!