5

シンプルなオブジェクトが表示されたGLKitベースのアプリがあります。

GLKViewが更新されない (-drawRect:が呼び出されない)画面の回転を除いて、すべて正常に動作します。そのため、回転中、投影マトリックスは動的に変化する画面サイズに応じて更新されず、オブジェクトは見栄えが悪くなります (引き伸ばされます)。

4

3 に答える 3

6

私はとのGLKit経験がないので、これは暗闇の中のショットかもしれません。問題のビューの contentMode を再描画に変更してみてください。UIView-drawRect:

view.contentMode = UIViewContentModeRedraw;

これにより、境界が変更されたときにコンテンツを再描画する必要があることがビューに通知されます。それ以外の場合は、UIView単にコンテンツのスケーリングを試みます (contentMode のデフォルトは ですUIViewContentModeScaleToFill)。その理由は、コンテンツを再描画するよりもそこにあるものをスケーリングする方がはるかに簡単であり、UIView可能な限り効率的になるように設計されているためです.

于 2013-03-17T13:55:50.727 に答える
0

まず、アプリケーション ライフサイクルの早い段階で、デバイスの向きの変更を有効にします。

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

次に、ビューがインスタンス化されたら、そのような通知を登録します。

[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(deviceOrientationDidChange:) name: UIDeviceOrientationDidChangeNotification object: nil];

-deviceOrientationDidChange:次に、ビューコントローラーに実装して呼び出します-setNeedsDisplay

于 2013-03-11T03:44:16.230 に答える