CAKeyframeAnimation
パスに沿ってアニメーション化するレイヤーがあります。transform
アニメーションrotationMode
がに設定されているため、レイヤーには変化するプロパティもありkCAAnimationRotateAuto
ます。
レイヤーをタップするとき(タップジェスチャレコグナイザーで検出し、この質問のようにpresentationLayer
アニメーションレイヤーのヒットテストを行います。これを行うためのより良い方法がある場合は、私に知らせてください)、次のことを行います。
- 位置を取得し、プレゼンテーション層から変換します
- 現在のアニメーションを削除します。
- 手順1で取得した情報を使用して、変換と開始点を維持し、前のアニメーションが終了したばかりの場所から約40ピクセルの新しいエンドポイントへのレイヤーの通過を遅くする、新しいアニメーションをレイヤーに追加します。
最終的には、タップすると、元のキーフレームアニメーションが削除されたポイントで、パスに接する直線に沿ってアニメーションレイヤーが停止するまで遅くなります。
数学的にこれを行うにはどうすればよいですか?私はすでに開始点と変換を持っているので、おそらく開始点、変換、および距離(楽しみのために40と言う)を使用して、終点を理解する必要があるように思えます。何か案は?