web-dev-qa-db-ja.com

layer.shouldRasterizeをYESに設定する必要がある場合

ビューのレイヤープロパティを設定することにより、いくつかの遅延の問題の修正を見てきました

view.layer.shouldRasterize = YES;

UICollectionViewを使用してセルを準備し、プロパティを設定すると、パフォーマンスに大きな違いが見られました。

その意味がわからない。

説明を得るのは素晴らしいことです。ありがとう!

45
Avner Barr

WWDC 2012 Polishing Your Interface Rotations video(有料の開発者サブスクリプションが必要)で、彼らはレイヤーのラスタライズの利点と意味について話しています。このビデオは別のトピック(興味深いトピック)ですが、ラスタライズとスナップショットの長所と短所について話します(ビデオの約8分から開始し、UIView階層とプレゼンテーションの関係についての背景を説明します)ツリー、レンダーツリー、そしてビデオのさらに6分でラスタライズの説明に飛び込みます)。

一番下の行は、アニメーション化するビューが複雑である(つまり、再レンダリングに比較的費用がかかる)が、アニメーション化されたビュー自体は変わらない場合、レイヤーをラスタライズすると、常にレイヤーを再レンダリングしないため、パフォーマンスが向上します。ただし、メモリを犠牲にしてこれを行います(メモリにラスタライズされた画像を保存します)。

ただし、レイヤー内の変更をアニメーション化すると、shouldRasterizeがパフォーマンスに悪影響を与える可能性があります(アニメーションの各フレームでレイヤーを再ラスタライズするため)。

一般に、変化しないレイヤーの複雑なセットをアニメーション化する場合は、shouldRasterizeYESに設定し、アニメーションを実行してから、shouldRasterizeをオフにすることができます。

55
Rob