スプリング効果(例:UIView.animateWithDuration(_:delay:usingSpringWithDamping:initialSpringVelocity:options:animations:completion:)
など)を使用してCAShapeLayerを回転させたいが、レイヤー上には表示されません。スプリング効果付き回転アニメーション
ボタンをタップすると、メインレイヤのサブレイヤは3 * PI/4に回転し、スプリングは2 * PI/3にバウンスする必要があります。次に、ボタンを再びタップすると、レイヤーの回転は、以前とは逆の順序で行う必要があります。最初に2 * PI/3にバウンスしてから、最初の位置に回転します(最初の回転の前に)。
どうすればいいですか? UIView.animateWithDuration(_:delay:usingSpringWithDamping:initialSpringVelocity:options:animations:completion:)
でレイヤーのトランスフォームプロパティがデフォルトでアニメーション可能なので、私はそれを達成できません。
私はCATransaction
を変更しようとしましたが、それは唯一の(対価その他の回転を考慮せずに)1つの角度で回転:
let rotation1 = CGAffineTransformRotate(CGAffineTransformIdentity, angle1)
let rotation2 = CGAffineTransformRotate(CGAffineTransformIdentity, angle2)
let transform = CGAffineTransformConcat(rotation1, rotation2)
CATransaction.begin()
CATransaction.setAnimationDuration(0.6)
self.plusLayer.setAffineTransform(transform)
CATransaction.commit()
更新
Duncan C postによると、私はCASpringAnimation
を使用しようと、私はアニメーションをachive一方向:
ボタンをタップしてアニメーションを反転するにはどうすればよいですか?
ご協力いただきありがとうございます。
感謝を!それは私をたくさん助けました!しかし、私は1つの問題が残っています:ボタンをタップしてそのアニメーションを逆にする方法? – krlb
これを行う方法の1つです:現在の回転値と回転値を追跡し、ボタンがクリックされるたびに切り替えるインスタンス変数を作成します。 –
あなたはそうです、それは動作します!ありがとうございました! – krlb