这类似于stackoverflow上的另一个问题但是那里的大小是0,0
而且我在这里得到了奇怪的非零大小。所以看起来这可能是一个不同的问题。
当我在layoutSubviews中配置帧缓冲区时会出现问题。
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &backingWidth);
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &backingHeight);
此次调用返回时,我获得的尺码为1139
(backingHeight
)x 841
(backingWidth
)。
这些尺寸看起来很奇怪,因为它们与我所知道的任何标准尺寸都不对应。
ipad面向肖像模式。堆栈以layoutSubviews
开头。我读了一些早期的线程,并决定在layoutSubviews
可能已经完成稳定视图的时候推迟调用。但即使我将帧缓冲区创建延迟到显示链接回调,值也没有显示出改进,仍然是1139
(h)x 841
(w)。
另外,如果我在调试器中检查UIScreen mainScreen
上的边界大小,我得到1024x768。
(lldb) print ((CGRect)[[ UIScreen mainScreen ] bounds ]).size.height
(CGFloat) $0 = 1024
(lldb) print ((CGRect)[[ UIScreen mainScreen ] bounds ]).size.width
(CGFloat) $1 = 768
所以看起来这些界限似乎没有转移到OpenGL EAGLayer的backingWidth
和backingHeight
。帧缓冲仍然会被创建,但我的内容基于错误的(更大的)大小并离开屏幕。
我在xcode 4.5.2上,而ipad在iOS 5.1.1上。我将继续追踪这一点,但没有什么可去的。
答案 0 :(得分:0)
所以,我做了一些研究,并认为如果frame.layer的大小错误,那么我猜测它可能不是帧和opengl之间的大小问题转移。
问题出在xib文件中。
我拉开了xib,去了窗口,=>查看并拉开尺寸检查员。大小错误,因此鼠标可能无意中拖动了xib中的视图。这是一个微不足道的错误,但这是问题的根源 - 我纠正了xib,现在它工作正常。这需要花费几个多小时来诊断实际上是一个简单的修复,但我一直在诊断代码而不是xib。窗口在xib(1024,768)中的大小正确,并且灰色,因此xcode不允许您修改它,但视图大小可以修改,并且视图的大小错误地大于窗口。所以我手动将视图大小与窗口大小匹配。
感谢任何可能试图解决这个问题的人。