ios – 在Swift中动画CAGradientLayer

前端之家收集整理的这篇文章主要介绍了ios – 在Swift中动画CAGradientLayer前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在考虑使用 Swift动画CAGradientLayer.对于一个资源,我使用这个 post

这是我的代码

class ViewController: UIViewController {

  var gradient : CAGradientLayer?;

  override func viewDidLoad() {
    super.viewDidLoad()
  }

  override func viewDidAppear(animated: Bool) {

    self.gradient = CAGradientLayer()
    self.gradient?.frame = self.view.bounds
    self.gradient?.colors = [ UIColor.redColor().CGColor,UIColor.redColor().CGColor]
    self.view.layer.insertSublayer(self.gradient,atIndex: 0)

    animateLayer()
  }

  func animateLayer(){

    var fromColors = self.gradient?.colors
    var toColors: [AnyObject] = [ UIColor.blueColor().CGColor,UIColor.blueColor().CGColor]

    var animation : CABasicAnimation = CABasicAnimation(keyPath: "colors")

    animation.fromValue = fromColors
    animation.toValue = toColors
    animation.duration = 3.00
    animation.removedOnCompletion = true
    animation.fillMode = kCAFillModeForwards
    animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
    animation.delegate = self

    self.gradient?.addAnimation(animation,forKey:"animateGradient")
  }
}

我在Objective-C中尝试过这个工作,但是它可以在Swift中使用,但是当我运行该程序时,它会动画化,但是最后还是返回到以前的颜色,所以我需要它保持蓝色.

解决方法

我已经检查了你的代码,发现一个错误在这里.你忘了设置self.gradient的颜色,你只是给动画的颜色,这就是为什么动画正常工作,最后你看到它的颜色回到红色.

写下这个缺少的代码

var toColors: [AnyObject] = [UIColor.blueColor().CGColor,UIColor.blueColor().CGColor]
self.gradient.colors = toColors // You missed this line
var animation : CABasicAnimation = CABasicAnimation(keyPath: "colors")

您也可以在这里检查工作代码Sample

更新:如何不断重复这个渐变过渡?

所以你可以使用CAAnimation的委托.一旦动画完成,它就会让你知道,然后可以设置fromColors和toColors值,并一次又一次地调用animateLayer()函数.但是,为此,您将不得不在代码中进行一些更改.

>从陶瓷和陶瓷全球化.
>在animationDidStop委托方法中更改其值.
>再次调用animateLayer()函数.

这是委托方法体:

override func animationDidStop(anim: CAAnimation!,finished flag: Bool) {

    self.toColors = self.fromColors;
    self.fromColors = self.gradient?.colors
    animateLayer()
}

您也可以在这里检查工作代码Sample

猜你在找的iOS相关文章