2

これは、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 の境界サイズを調べると、mainScreen1024x768 になります。

(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 を使用しています。私はこれを追跡し続けますが、行くべきことはあまりありません。

4

1 に答える 1

0

そのため、さらに調査を行ったところ、frame.layer が間違ったサイズを保持している場合、フレームと OpenGL 間のサイズの転送の問題ではない可能性があると推測しました。

問題は xib ファイルにありました。

xibを引っ張って開き、ウィンドウに移動し、=>表示して、サイズインスペクターを開きました。サイズが間違っていたため、マウスが誤って xib でビューをドラッグした可能性があります。これは些細なエラーでしたが、それが問題の原因でした。xib を修正したところ、正常に動作するようになりました。これは、実際には単純な修正であったことを診断するのに数時間以上かかりましたが、xib ではなくコードを診断し続けました。ウィンドウは xib (1024, 768) で適切なサイズを保持しており、これはグレー表示されているため、xcode でこれを変更することはできませんが、ビューのサイズを変更することができ、ビューのサイズが誤ってウィンドウよりも大きくなっています。そのため、ビューのサイズをウィンドウのサイズに手動で合わせました。

これを理解しようとした人に感謝します。

于 2012-11-09T21:10:35.070 に答える