7

アニメーション化する目的で、ビューに50枚の画像を追加したいとします。そして、「UIView」アニメーションではなく、Core Animation(CABasicAnimationなど)を使用することを計画しているとしましょう。

50個のサブビューまたは50個のサブレイヤーを追加して、これを実装する方がよいでしょうか。それは違いを生みますか?

ありがとう。

4

4 に答える 4

17

ここで説明するように、アニメーションでUIViewとCALayersの両方を使用しましたが、それらの間のパフォーマンスの違いはごくわずかでした。UIViewは、レイヤーを囲む非常に軽量なラッパーです。また、必要なレイヤーベースのアニメーションは、UIViewのバッキングレイヤーに簡単に適用できます。

クロスプラットフォーム(Mac / iOS)のUI要素を作成したい状況でCALayersを直接使用しました。これは、CALayersの実装が両方のプラットフォームでほぼ同じであるためです(NSViewとUIViewが大幅に異なる場合とは異なります)。CALayersには、すぐに使用できるタッチ処理ルーチンはありませんが、必要に応じてその機能を追加できます。

レイヤーの限定的な3D操作(CoverFlowエフェクトなど)を実行しようとしたり、CAReplicatorLayerを使用してパーティクルエフェクトを生成したりする場合など、レイヤーを直接操作したい場合もあります。

于 2011-01-14T03:22:01.580 に答える
1

UIViewにはサブレイヤーが含まれているため、サブレイヤーはより重く、イベントやタッチハンドラー/変数など、50個の画像すべてにおそらく必要のないものが含まれています。したがって、レイヤーを使用すると、各画像のビューを使用するよりも、おそらくわずかに効率的で、使用するメモリが少し少なくなります。

于 2011-01-14T00:38:38.677 に答える
1

このような少数の画像の違いはごくわずかです。最も便利なものを使用してください。

于 2011-01-14T00:41:38.360 に答える
0

私はアニメーションをまだ行っていませんが(まだ:-)、それについて読んだことを覚えているのは、50個すべてがタイル状になっている1つの画像を作成し、描画時に正しい画像にオフセットすることを示唆しています。そうすれば、1つのレイヤーやUIImageなどを表示するだけで済みます。速度についてはわかりませんが、メモリを節約でき、管理とコーディングが簡単になると思います。

于 2011-01-14T00:44:39.837 に答える