iOS 在CAGradientLayer中对颜色变化进行动画处理。

示例

// 获取渐变的当前颜色。
let oldColors = self.gradientLayer.colors
    
// 定义渐变的新颜色。
let newColors = [UIColor.red.cgColor, UIColor.yellow.cgColor]
    
// 设置渐变的新颜色。
self.gradientLayer.colors = newColors
    
// 初始化新动画以更改渐变的颜色。
let animation: CABasicAnimation = CABasicAnimation(keyPath: "colors")
    
// 设置当前颜色值。
animation.fromValue = oldColors
    
// 设置新的颜色值。
animation.toValue = newColors
   
// 设置动画的持续时间。
animation.duration = 0.3
    
// 设置动画以在完成后将其删除。
animation.isRemovedOnCompletion = true
    
// 将接收器设置为在动画完成时在其最终状态下保持可见。
animation.fillMode = kCAFillModeForwards
    
// 设置线性步调,使动画在其持续时间内均匀发生。
animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
    
// 设置动画的委托。
animation.delegate = self
    
// 添加动画。
self.gradientLayer.addAnimation(animation, forKey: "animateGradientColorChange")

结果:

基本的CAGradientLayer变色动画。