我学习CAAnimation,发现一件事不理解。
使用CABasicAnimation制作trnsform动画 1例:
private func transfAnim() {
let startValue = iv.layer.transform
let endValue = CATransform3DTranslate(startValue, 50, 200, 0)
CATransaction.setDisableActions(true)
iv.layer.transform = endValue
let anim = CABasicAnimation(keyPath: #keyPath(CALayer.transform))
anim.duration = 2
anim.timingFunction = CAMediaTimingFunction(name: .easeOut)
anim.byValue = CATransform3DMakeTranslation(100, 0, 0)
iv.layer.add(anim, forKey: nil)
}
动画一开始跳到endValue位置,然后开始翻译=> 100,然后再次跳到endValue位置
2种情况:
private func transfAnim2() {
let startValue = iv.layer.transform
let endValue = CATransform3DTranslate(startValue, 50, 200, 0)
CATransaction.setDisableActions(true)
iv.layer.transform = endValue
let anim = CABasicAnimation(keyPath: #keyPath(CALayer.transform))
anim.valueFunction = CAValueFunction(name: .translateX)
anim.duration = 2
anim.byValue = 100
iv.layer.add(anim, forKey: nil)
}
在开始动画时开始翻译=> 100,此后跳转到endValue位置
我看到分配在anim.valueFunction = CAValueFunction(name:.translateX)中 但是为什么我们有这样的行为?感谢高级