2

私のアプリケーションには、無限にループする CAAnimation がいくつかあります ( animation.repeatCount = HUGE_VALF)。

私がやりたいのは、現在のサイクルが終了した後に、これらのアニメーションを削除することです。-[CALayer removeAnimationForKey:]レイヤーを通常の位置にジャンプさせますが、これを防ぎたいです。

ができることは、レイヤープレゼンテーションレイヤーの現在の変換を取得し(回転を行っています)、アニメーションを終了する時間を計算し、アニメーションを削除し、repeatCountが1の別のアニメーションを追加することですが、それは不要なようです複雑で、これを行うにはもっと簡単な方法が必要だと思います。

それで、何か提案はありますか?

4

2 に答える 2

2

フラグに基づいて、完了ブロックがアニメーションを再度呼び出すアニメーションを使用するのはどうですか? アニメーション シーケンスを停止する場合は、フラグを false に設定します。完了ブロックは、繰り返しフラグが false であることを確認し、最後のサイクルの終わりで停止します。

アニメーションをコミットした後、変換を終了値に変更する必要があります。ビュー アニメーションを実行している場合は、変換を最終的な値に設定するだけです。そうすれば、アニメーションが削除されると、終了状態のままになります。

レイヤー変換を使用している場合は、変更が暗黙的にアニメーション化されないように、[CATransaction setDisableActions: YES] を使用して、変換を最終状態に設定するコードを CATransactionBegin/ に配置する必要があります。

于 2012-04-27T01:29:53.967 に答える