Почему мои CALayers не оживляют? Вместо этого они просто мгновенно встают на свои места с новыми значениями - PullRequest
0 голосов
/ 19 июня 2019

У меня есть CALayer с градиентным цветовым эффектом.Я хочу изменить значения «местоположения» и «цвета», чтобы изменить градиент.И я пытаюсь его оживить.

Но с помощью следующего кода он просто мгновенно меняется на новые значения.

    let gradientDuration = 0.25

    let locationAnimation = CABasicAnimation(keyPath: "locations")
    locationAnimation.fromValue = lowerGradientView.layer.locations
    locationAnimation.toValue = newLocations

    let colorsAnimation = CABasicAnimation(keyPath: "colors")
    colorsAnimation.fromValue = lowerGradientView.layer.colors
    colorsAnimation.toValue = newColors

    let animationGroup = CAAnimationGroup()
    animationGroup.duration = gradientDuration
    animationGroup.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
    animationGroup.animations = [locationAnimation, colorsAnimation]

    lowerGradientView.layer.add(animationGroup, forKey: "locationAndColors")
    lowerGradientView.layer.locations = newLocations as [NSNumber]?
    lowerGradientView.layer.colors = newColors

Что я делаю неправильно, чтобы слой не анимировалсяизменения?

1 Ответ

0 голосов
/ 19 июня 2019

Проблема в том, что эти строки в конце:

lowerGradientView.layer.locations = newLocations as [NSNumber]?
lowerGradientView.layer.colors = newColors

По сути, они отменяют анимацию.

...