0

現在、50 の間隔で x 軸を横切って移動するようにオブジェクトpositionをアニメーション化しています。ただし、ユーザーがオブジェクトをその前に置くなど、特定の状況でオブジェクトを停止してアニメーションを変更できるようにしたいと考えています。

使用し[self.layer setPosition:newPosition]ないと、アニメーションの完了後にオブジェクトが元の位置に跳ね返ります。オブジェクトを停止するためにドロップすると、オブジェクトはsetPosition新しいアニメーションをコミットする前のポイントに跳ね返ります。停止してその場所にとどまり、新しいアニメーションを実行するにはどうすればよいですか?

4

1 に答える 1

1

暗黙的なレイヤー アニメーションを使用して、レイヤーの位置をアニメーション化しています。アニメーションが完了する前にキャンセルするには、次のようにします。

[self.layer removeAllAnimations];

これには、レイヤーを最終的なアニメーション位置にジャンプさせるという副作用があります。レイヤーをその場所で停止させたい場合は、現在のpresentationLayer位置を取得する必要があります。

CGPoint currentAnimationPosition = self.presentationLayer.position;
self.layer.position = currentAnimationPosition;
[self.layer removeAllAnimations];

新しいアニメーションを実行するには、以前と同じようにレイヤーに新しい位置を設定するだけです。

于 2013-07-04T07:01:53.633 に答える