シンプルなオブジェクトが表示されたGLKit
ベースのアプリがあります。
GLKView
が更新されない (-drawRect:
が呼び出されない)画面の回転を除いて、すべて正常に動作します。そのため、回転中、投影マトリックスは動的に変化する画面サイズに応じて更新されず、オブジェクトは見栄えが悪くなります (引き伸ばされます)。
シンプルなオブジェクトが表示されたGLKit
ベースのアプリがあります。
GLKView
が更新されない (-drawRect:
が呼び出されない)画面の回転を除いて、すべて正常に動作します。そのため、回転中、投影マトリックスは動的に変化する画面サイズに応じて更新されず、オブジェクトは見栄えが悪くなります (引き伸ばされます)。
私はとのGLKit
経験がないので、これは暗闇の中のショットかもしれません。問題のビューの contentMode を再描画に変更してみてください。UIView
-drawRect:
view.contentMode = UIViewContentModeRedraw;
これにより、境界が変更されたときにコンテンツを再描画する必要があることがビューに通知されます。それ以外の場合は、UIView
単にコンテンツのスケーリングを試みます (contentMode のデフォルトは ですUIViewContentModeScaleToFill
)。その理由は、コンテンツを再描画するよりもそこにあるものをスケーリングする方がはるかに簡単であり、UIView
可能な限り効率的になるように設計されているためです.
まず、アプリケーション ライフサイクルの早い段階で、デバイスの向きの変更を有効にします。
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
次に、ビューがインスタンス化されたら、そのような通知を登録します。
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(deviceOrientationDidChange:) name: UIDeviceOrientationDidChangeNotification object: nil];
-deviceOrientationDidChange:
次に、ビューコントローラーに実装して呼び出します-setNeedsDisplay