【问题标题】:Animate drawing of CALayer with spring animationCALayer的动画绘制与弹簧动画
【发布时间】:2015-12-04 10:37:55
【问题描述】:

我想为drawing an arc onscreen 制作动画,但我希望它具有iOS 7 的UIView animate... usingSpringDamping: API 中的弹簧效果。我知道我可以通过创建CABasicAnimation 直接使用Core Animation,但是我失去了漂亮的弹簧效果,并且内置的计时功能停止在EaseOut,这并不是我真正想要的。理想情况下,弧线会拉到一个目标角度,越过它,然后来回反弹,直到它落在目标上。

有没有办法在不编写我自己的计时函数/子类化CAAnimation 的情况下做到这一点?

【问题讨论】:

  • 使用关键帧动画。
  • 我写了一个类,使用关键帧动画模拟弹簧动画,可能对你有用。 github.com/jwilling/JNWSpringAnimation 它不会让你画出一条路(就像你似乎想做的那样),但你至少可以从中获得灵感。

标签: ios objective-c spring animation core-animation


【解决方案1】:

尝试使用CASpringAnimation,它的API和UIView Spring Animation一样。

【讨论】:

    【解决方案2】:

    这是一个在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

    【讨论】:

    • 这家伙为什么不为此创建一个 CAMediaTimingFunction?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-05
    相关资源
    最近更新 更多