CABasicAnimation具有变换和位置的各种行为

时间:2019-02-08 08:00:11

标签: ios animation swift4 caanimation

我学习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)中 但是为什么我们有这样的行为?感谢高级

0 个答案:

没有答案