web-dev-qa-db-ja.com

UIViewアニメーションとCALayers

IView's独自のアニメーションメソッドとは対照的に、アニメーションをCALayerで概念化することに苦労しています。これに "Core Animation"を投げると、おそらく、誰かがこれらの概念を高レベルから明確に説明できるため、何が起こっているのか、UIViewアニメーションを移行したい理由を視覚化できます(これはiPhoneのCALayerアニメーションに慣れています。 Cocoa-Touchのすべてのビューは自動的にレイヤーを取得します。そして、どうやら、あなたは一方および/またはもう一方をアニメーション化することができますか?!?それらを一緒に混ぜますか?!?しかし、なぜ?行はどこですか?それぞれの長所と短所は何ですか?

コアアニメーションプログラミングガイドはすぐにレイヤークラスとタイミングクラスにジャンプします。これらのさまざまな要素が存在する理由と相互関係を理解する必要があります。

75
Meltemi

目の保養のためのコントロールとレイヤーのビューを使用します。レイヤーはイベントを受信しないため、これらの場合にビューを使用する方が簡単ですが、スプライトや背景などをアニメーション化する場合は、レイヤーを使用すると便利です。イベントはレイヤーを通過してバッキングビューに渡されるため、イベントをめちゃくちゃにすることなく、かなり視覚的に表現できます。視覚的な表現に使用しているビューをオーバーレイしてみてください。タップイベントを基になるビューに自分で渡す必要があります。

55
Matt Long

UIViewは常にCALayerにレンダリングされます。 UIViewメソッドを使用してビューをアニメーション化すると、基礎となるCALayerを効果的に操作できます。

単純なことを行う必要がある場合は、UIViewメソッドを使用します。より複雑な状況、または特にビューに関連付けられていないレイヤーが必要な場合は、CALayersを使用します。

25
Marco Mustapic

私はこの一年でたくさんのアプリを作りました。これが私の経験則です:

  1. UIViewは、期待どおりに機能しなくなるまで使用してください。
  2. 次に、CoreAnimationに移動します。しかし、あなたがそれに入る前に...
  3. 複数のアニメーションを作成する場合は、Cocos2Dを使用してください。
21
Chris Garrett

UIView変換は2Dのみであり、それに制限されています。ただし、LAyer変換は3Dにすることができます。3Dを行う場合はこれらを使用する必要があります。UIView変換またはCALayer変換を変更すると、UIViewアニメーションが機能します。したがって、基本的なレベルでは、ビューではなくレイヤーで作業しているときに、より多くの操作を行うことができます。

9
Daniel

「何がCocos2Dの方が上手く機能しているのか?タッチイベントの処理や、openGL ESで見落とされている他の多くの問題に関して、他に問題はありませんか?」

答えは、Cocos2Dが実際にはOpenGL ESフレームワークに基づいていないにもかかわらず、実際にはそうであると示唆しているようです。優れた2Dゲームエンジンですが、レンダリングの大部分にOpenGLを実装しています-物理ライブラリに接続されているため、アニメーションに非常に興味深い可能性が数多くあります-Chrisは正解です-実際、コーディングははるかに少なくなっています。

2
TouchGameDev