2

その中に(カスタム)UIViewを含むUIScrollViewがあります。

私のscrollViewDidScroll-methodで私が呼んでいる

[myCustomView setNeedsDisplay];

これにより、カスタム UIView で drawRect: メソッドを実装している場合、たとえそれが完全に空であっても、スクロールが著しく遅くなります。

drawRect: メソッドを削除するとすぐに、再びスムーズになります。

まったくわからないのですが、どうして... 誰かいますか?

4

1 に答える 1

3

ドローレクトも嫌い

「これは、ハードウェア アクセラレータによるアニメーションが Cocoa で機能するためです。

カスタム drawRect メソッドがない場合、システムはビューのピクセルをビデオ メモリにキャッシュします。それらを再描画する必要がある場合、ピクセルを画面にブライトするだけです。

カスタム drawRect メソッドがある場合、システムは代わりに drawRect メソッドを呼び出してメイン メモリ内のピクセルをレンダリングし、それらのピクセルをビデオ メモリにコピーしてから、フレームごとにピクセルを画面に描画する必要があります。ドキュメントには、可能であれば drawRect を避けるように書かれています。

メイン メモリとビデオ メモリは、ほとんどまたはすべての iOS デバイスで共有されていると思いますが、ビューに drawRect メソッドを実装する場合、システムはまだ多くの作業を行う必要があります。

OpenGL はディスプレイ ハードウェアと直接通信するため、OpenGL レイヤーを使用し、OpenGL 呼び出しでレンダリングする方がよいでしょう。」

その引用へのリンク: http://www.iphonedevsdk.com/forum/iphone-sdk-development/80637-drawrect-makes-scrolling-slow-uiscrollview.html

于 2011-05-28T07:39:18.243 に答える