CABasicAnimation различное поведение с преобразованием и положением - PullRequest
0 голосов
/ 08 февраля 2019

Я изучаю CAAnimation и найду одну вещь, которую не понимаю.

Создайте анимацию trnsform с помощью CABasicAnimation 1 case:

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 case:

 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

iсм. Distiction в anim.valueFunction = CAValueFunction (name: .translateX) Но почему у нас такое поведение?Спасибо за продвинутый

...