1

オブジェクトを保持している がありNSMutableArrayます (オブジェクトはアークを表します)。

画面をタップするたびに、円が配列に追加され、描画長方形セットが更新される必要があります。を呼び出しているのではなくdrawRect:、更新する必要があることを伝えているだけです。

drawRect:円の配列を調べるたびに、すべての円を再描画しますか、それとも新しいものだけを再描画しますか?前回から変更されていませんか?

すべての円を再描画する場合、これに対して最適化するための良い方法はありますか?

4

2 に答える 2

1

あなたの描画コードはまさにそのとおりです。すべての円を描画するように記述した場合、すべての円が描画されます。drawRect:ビューの「汚れた」部分である渡された四角形を考慮に入れるようにメソッドを書くことができます-更新が必要な部分ですが、テストと測定によって決定した場合にのみ、そうする価値があります。描画がパフォーマンスの問題であること。

ただし、 Cocoa Touch描画をクリップするため、 を使用する代わりに を使用して適切なダーティ レクタングルを渡すと、画面全体を更新する必要がなくなります。たとえば、新しい円が追加されたときに、それぞれの新しい円の境界長方形だけを渡すことができます。setNeedsDisplaysetNeedsDisplayInRect:

于 2012-08-08T03:30:03.387 に答える
0

setNeedsDisplayを呼び出しているということですか?その場合、そのメソッドはビュー全体を再描画します。ビューの一部のみを再描画する場合は、setNeedsDisplayInRect:を使用できます。

于 2012-08-08T03:14:10.817 に答える