SpringWithDamping for CALayer animations?
in iOS9 Apple finally made the CASpringAnimation
class public.
You can use it like that:
let spring = CASpringAnimation(keyPath: "position.x")spring.damping = 5spring.fromValue = myLayer.position.xspring.toValue = myLayer.position.x + 100.0spring.duration = spring.settlingDurationmyLayer.addAnimation(spring, forKey: nil)
Notice that you cannot set the animation duration - you need to ask the CASpringAnimation
class for the settlingDuration
(e.g. "How much time is going to take for the spring system to settle down") and then set it as the duration of your animation.
Check the header files for CASpringAnimation
- it exposes a number of spring system variables you can adjust - stiffness, mass, etc.
There is (and have been for a while) a private class called CASpringAnimation
that I'm pretty sure is being used behind it all (but I haven't verified it). Unfortunately, it is still private.
As David said, CASpringAnimation
is private (for now?), but I recently came across RBBSpringAnimation
from the RBBAnimation project.
I can definitely recommend this, it was very easy to drop in as a replacement for my existing CABasicAnimation.