5

これらの 3 つのクラスを別々に数回使用しました。

たとえば、複数のアニメーション (例: CABasicAnimations など) を同時に発生するようにグループ化したい場合、最初に思いつくのはCAAnimationGroup、レイヤーがある状態から別の状態 (例: 表示、スライドインなど) に変化するのを見たい場合です。CATransition. しかし同時にCATransaction、バッチでアニメーションを実行することを意図しています (WTH?)

CATransaction別の獣のようにCATransition見えますが、通常はCATransitions中が見えますCATransactionsか?ドキュメントを何度か読んだことがありますが、それらを並べて比較したり、いつ/何に使用する必要があるかを比較したりすることはありません。

誰かが彼らの関係/使用法を指摘できれば素晴らしいでしょう:)

4

1 に答える 1

15

CATransactionそしてCATransition確かに異なる獣です...

あなたの理解に欠けているビットは約CATransactionです。それを手に入れたら、おそらくすべてのピースが自然に収まるでしょう。

は、コア アニメーションを実行するCATransactionたびに常に作成されます。

レイヤーに対するすべての変更は、トランザクションの一部です。CATransaction は、複数のレイヤー ツリーの変更をレンダリング ツリーのアトミックな更新にバッチ処理するコア アニメーション クラスです。

ソース

明示的に指定しないと、暗黙的CATransactionに作成されます。

[CATransaction begin/commit]デフォルトのアニメーションを使用するかどうか、アニメーションの長さなど、アニメーションのいくつかのパラメーターを調整する明示的なトランザクションを ( を使用して) 作成できます。これらはすべてCATransactionリファレンスで説明されています。

明示的なトランザクションは、多数のレイヤーのプロパティを同時に設定する場合 (たとえば、複数のレイヤーをレイアウトする場合)、レイヤー アクションを一時的に無効にする場合、または結果として生じる暗黙のアニメーションの継続時間を一時的に変更する場合に特に役立ちます。

つまり、すべてを再開すると、CATransaction は、コア アニメーション アニメーションが実行される「大きな傘」であり、それが 、CABasicAnimationCATransitionまたはグループ アニメーションであるかどうかにかかわらずです。アニメーション/トランジションの発生方法に影響を与えるいくつかの一般的なパラメーターを設定できます。パラメーターを指定しない場合は、既定の (暗黙的な) パラメーターが使用されます。

お役に立てれば。

于 2012-12-26T15:55:01.653 に答える