我申请了CAShapeLayer(让我们将其命名为pulseLayer
)2个动画,使用此代码:如何更新CABasicAnimation的toValue/fromValue更改时更平滑?
let scaledAnimation = CABasicAnimation(keyPath: "transform.scale.xy")
scaledAnimation.duration = 0.75
scaledAnimation.repeatCount = Float.infinity
scaledAnimation.autoreverses = true
scaledAnimation.fromValue = 4
scaledAnimation.toValue = 4
scaledAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseIn)
let heartBeatAnimation = CABasicAnimation(keyPath: "transform.scale.xy")
heartBeatAnimation.duration = 0.75
heartBeatAnimation.repeatCount = Float.infinity
heartBeatAnimation.autoreverses = true
heartBeatAnimation.fromValue = 1.0
heartBeatAnimation.toValue = 1.2
heartBeatAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseIn)
pulseLayer.add(heartBeatAnimation, forKey: "heartBeatAnimation")
在某些时候,而heartBeatAnimation
是我需要删除心脏跳动的动画,并用这个代码添加的缩放动画:
pulseLayer.add(self.scaledAnimation, forKey: "scaledAnimation")
pulseLayer.opacity = 0.55
pulseLayer.removeAnimation(forKey: "heartBeatAnimation")
,但我没有得到这两动画之间的平滑过渡,即使UIView.animate()
,所以我努力让自己只有一个动画heartBeatAnimation
并改变其toValue
fromValue
相同的值,以获得尽可能scaledAnimation
与此代码:
heartBeatAnimation.toValue = 4
heartBeatAnimation.fromValue = 4
什么都没有发生缩放稳定动画...!
所以任何想法如何更新这些值,使缩放的动画更平滑!
我认为你需要设置heartBeatAnimation.toValue = 4,heartBeatAnimation.fromValue = 0,为平稳过渡 – Hitesh