複数のレイヤーをいつ使用する必要がありますか?
残念ながら、答えは次のとおりです。レイヤーは安価であり、UIView/UIImageView よりも確実に軽量ですが、従来の iOS レスポンダー チェーンの一部ではありません (タッチを直接受信/中継できないため) が、通常はセル自体がそれを処理します。Appleは、きれいにするために分割されたビュー階層を優先して避けることをお勧めします -drawRect:
が、それは背景用に別のビューを持たなければならないという意味ではありません。
drawRect で UIImageView からの出力を使用することは可能ですか?
FPS に問題がある場合は、問題のない箇所を最適化する前に、その原因を特定することをお勧めします。最初に画像を調査します。何らかのキャッシュを実行していますか、それともテーブルビュー セルが呼び出されるたびに再描画する必要があり-drawRect:
ますか? UIImageView は、画像に対して何らかのサイズ変更/スケーリング/解凍を実行する必要がありますか? もしそうなら、自分で画像のサイズを一度変更し、その結果をビットマップコンテキストに保存することを検討しましたか? UIImageView に時間を無駄にするのではなく、配列から引き出して描画するだけですか?
あなたの他の質問が閉じている限り、私はアニメーションにも対処します
特にセルが CALayer を使用するのではなく、Core Graphics で背景を描画している場合は、表のセルの背景をアニメーション化するのは簡単です (つまり、CABasicAnimation を使用して背景色との間でアニメーション化することを意味します)。選択された状態の変化に対する TwUI のアニメーション メカニズムが特に気に入っています。
- アニメーション コンテキストを開始します。
- を呼び出すメソッド
-setNeedsDisplay
、またはアニメーション化する追加の作業を行うメソッドを用意します。
- アニメーションをコミットします。