アニメーション化する目的で、ビューに50枚の画像を追加したいとします。そして、「UIView」アニメーションではなく、Core Animation(CABasicAnimationなど)を使用することを計画しているとしましょう。
50個のサブビューまたは50個のサブレイヤーを追加して、これを実装する方がよいでしょうか。それは違いを生みますか?
ありがとう。
アニメーション化する目的で、ビューに50枚の画像を追加したいとします。そして、「UIView」アニメーションではなく、Core Animation(CABasicAnimationなど)を使用することを計画しているとしましょう。
50個のサブビューまたは50個のサブレイヤーを追加して、これを実装する方がよいでしょうか。それは違いを生みますか?
ありがとう。
ここで説明するように、アニメーションでUIViewとCALayersの両方を使用しましたが、それらの間のパフォーマンスの違いはごくわずかでした。UIViewは、レイヤーを囲む非常に軽量なラッパーです。また、必要なレイヤーベースのアニメーションは、UIViewのバッキングレイヤーに簡単に適用できます。
クロスプラットフォーム(Mac / iOS)のUI要素を作成したい状況でCALayersを直接使用しました。これは、CALayersの実装が両方のプラットフォームでほぼ同じであるためです(NSViewとUIViewが大幅に異なる場合とは異なります)。CALayersには、すぐに使用できるタッチ処理ルーチンはありませんが、必要に応じてその機能を追加できます。
レイヤーの限定的な3D操作(CoverFlowエフェクトなど)を実行しようとしたり、CAReplicatorLayerを使用してパーティクルエフェクトを生成したりする場合など、レイヤーを直接操作したい場合もあります。
UIViewにはサブレイヤーが含まれているため、サブレイヤーはより重く、イベントやタッチハンドラー/変数など、50個の画像すべてにおそらく必要のないものが含まれています。したがって、レイヤーを使用すると、各画像のビューを使用するよりも、おそらくわずかに効率的で、使用するメモリが少し少なくなります。
このような少数の画像の違いはごくわずかです。最も便利なものを使用してください。
私はアニメーションをまだ行っていませんが(まだ:-)、それについて読んだことを覚えているのは、50個すべてがタイル状になっている1つの画像を作成し、描画時に正しい画像にオフセットすることを示唆しています。そうすれば、1つのレイヤーやUIImageなどを表示するだけで済みます。速度についてはわかりませんが、メモリを節約でき、管理とコーディングが簡単になると思います。