Ich möchte die Rotation von CAShapeLayer mit Federeffekt machen (wie in UIView.animateWithDuration(_:delay:usingSpringWithDamping:initialSpringVelocity:options:animations:completion:)
) aber auf Schicht nicht auf einen Blick.Rotationsanimation mit Federeffekt
Wenn die Schaltfläche angetippt wird, sollte die Unterschicht der Hauptschicht auf 3 * PI/4 und die Feder auf 2 * PI/3 springen. Wenn die Taste erneut angetippt wird, sollte die Layerrotation in umgekehrter Reihenfolge als zuvor ausgeführt werden: Zuerst auf 2 * PI/3 springen und dann auf die Anfangsposition drehen (vor der ersten Drehung).
Wie könnte ich das tun? Ich kann es nicht unter UIView.animateWithDuration(_:delay:usingSpringWithDamping:initialSpringVelocity:options:animations:completion:)
erreichen, da die transform-Eigenschaft der Ebene standardmäßig animiert werden kann.
Ich habe versucht CATransaction
ändern, aber es dreht sich nur um einen Winkel (ohne Berücksichtigung anderer Drehung zu nehmen):
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()
aktualisieren
Nach Duncan C post Ich versuche CASpringAnimation
zu verwenden und ich achive Animation in eine Richtung:
myLayer.setAffineTransform(CGAffineTransformMakeRotation(angle))
let spring = CASpringAnimation(keyPath: "transform.rotation")
spring.damping = 12.0
spring.fromValue = 2.0 * CGFloat(M_PI)
spring.toValue = 3.0 * CGFloat(M_PI_4)
spring.duration = 0.5
myLayer.addAnimation(spring, forKey: "rotation")
Aber wie diese Animation auf die Schaltfläche angezapft umzukehren?
Vielen Dank im Voraus für Ihre Hilfe.
Dank! Es hat mir sehr geholfen! Aber ich habe noch ein Problem: Wie kann ich diese Animation auf Knopfdruck umkehren? – krlb
Hier ist eine Möglichkeit: Erstellen Sie Instanzvariablen, die den aktuellen Wert von und zu den Rotationswerten verfolgen und bei jedem Klicken auf die Schaltfläche umschalten. –
Sie haben Recht, es funktioniert! Danke nochmal! – krlb