私は動的デバイスの向きをサポートするOpenGLアプリケーションを持っています。私は4つの物理的な方向のいずれかにデバイスを回転することができ、すべてが期待どおりに動作します。モーダルビューコントローラを表示しているときのデバイスの回転
これでモーダルビューコントローラが追加されました。これは設定ビュー(これは非OpenGLです)を取得できるようにしました。モーダルビューコントローラは、任意のデバイス方向をサポートします。
しかし、モーダルビューコントローラを向きA(例えばポートレート)で表示し、向きB(横向きなど)で表示した場合、その表示が消えた後に、OpenGLビューが壊れてしまいます。私はOpenGLビューがそれ自身を '修正'するためにデバイスを異なる向きに向ける必要があります。
モーダルビューコントローラが終了すると、アプリケーションは既に方向Bにあると思うので、OpenGLビューを回転させることはありません。
モーダルコントローラの回転を無効にすると、モーダルコントローラがAの方向に表示され、デバイスがBの方向に回転し(モーダルビューコントローラが回転しなくなります)、コントローラを閉じると、OpenGLビューはwillRotateToInterfaceOrientation/didRotateFromInterfaceOrientationと方向Bに適切に向きを設定します。
モーダルコントローラの動的方向を保持する方法はありますか?また、モーダルコントローラを解除した後でもOpenGLビューも適切に回転しますか?
ありがとうございます。
あなたはOpenGLビューを更新するために回転の変化を検出するためにどのメカニズムを使用していますか?フレームを調整するOpenGLビューのプレゼンテーションを管理するのは何ですか? – Jonah
OpenGL View ControllerのshouldAutorotateToInterfaceOrientationがYESを返します。 willRotateToInterfaceOrientationはOpenGLビューコントローラで呼び出されます。 layoutSubviewsは、OpenGLバッファを解放するOpenGLビューで呼び出されます。次にrender関数が呼び出されると、OpenGLバッファは幅と高さを入れ替えて再作成されます。 – iraxef
モーダルが似顔絵で固定されていると、どのように動作しましたか?私はちょうどその同じ問題をahve – jfisk