使用弹簧动画对CALayer进行绘制动画

3
我想在屏幕上动态绘制一个弧线(drawing an arc onscreen),但我希望它具有iOS 7的UIView animate... usingSpringDamping: API中所发现的弹簧效果。我知道我可以通过创建CABasicAnimation直接使用核心动画,但这样会失去漂亮的弹簧效果,并且内置的定时函数只能到EaseOut,这并不是我想要的。理想情况下,弧线将绘制到目标角度,超过该角度,然后反复弹跳,直到稳定在目标位置。
是否有一种方法可以在不编写自己的定时函数/子类化CAAnimation的情况下实现此目的?

3
使用关键帧动画。 - duci9y
3
我写了一个类来模拟弹簧动画,使用关键帧动画实现,或许可以对您有所帮助。https://github.com/jwilling/JNWSpringAnimation。它无法让您绘制路径(就像您似乎想做的那样),但至少您可以从中获得灵感。 - sudo rm -rf
2个回答

3
尝试使用CASpringAnimation,它与UIView弹簧动画具有相同的API。

0
这是一个在CALayer上执行弹簧动画的函数。如果您不介意使用Swift。
SpringAnimation.animate(myCALayer,
                        keypath: "transform.rotation.x",
                        duration: 2.0,
                        usingSpringWithDamping: 0.7,
                        initialSpringVelocity: 1.8,
                        fromValue: 0,
                        toValue: Double(M_PI),
                        onFinished: nil)

演示应用程序:https://github.com/evgenyneu/SpringAnimationCALayer

1
这个人为什么不为此创建一个CAMediaTimingFunction呢? - TheCodingArt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接