現在、2つの異なる状態の小さなボタンを作成しています。すべての状態は2つのCAShapeLayer
で表され、状態間の遷移は一連のCAKeyframeAnimation
s/CABasicAnimation
でアニメートされ、すべてシェイプレイヤのパスプロパティが変更されます。私の質問は、どのように私は現在のアニメーションから開始する状態にアニメーション化する(アニメーション中にボタンが押されたか)です。CAKeyframeAnimationから現在のアニメーションステップを取得する方法
プレゼンテーション層に現在のプロパティ値を尋ね、アディティブアニメーション(完全に記述されているようにhere)を使用しますが、これはマルチステップアニメーションであるため、現在どのステップをアニメーション化しているのか把握する必要があります適切なアニメーションをチェーンして前の状態に戻します。しかしそれはややこしい(私はすべてのアニメーションをremoveOnCompletion=false
とし、どのアニメーションが現在アクティブでどのくらい遠いかを知るためにアニメーションの時間オフセットを照会したい)。
残念ながら、レイヤーの速度を0.0に設定し、逆方向に異なる動作をする2次アニメーションがあるため、timeOffset
を前後にアニメーション化するだけでは機能しません。
シェイプレイヤーのカスタムレイヤープロパティを使用するのは面倒ですが、現在のアニメーションステップよりも進捗プロパティーをより簡単に一致させることができます。