项目有个需求需要UIButton上的背景色是渐变动画的效果,如下。
实现原理
CAGradientLayer 用于实现渐变效果,CABasicAnimation用于对Layer做动画
源码:https://github.com/LSnumber1/...
思路
看gif图我们发现动画是从右到左,颜色一直渐变向左滑动的,把效果拆解下,可以分为两部分:
实现颜色的阶梯变化
对实现的阶梯颜色做动画
颜色阶级渐变
初始化一个CAGradientLayer,他的frame的宽高和UIButton的一致。
var caGradientLayer = CAGradientLayer()
caGradientLayer?.frame = CGRect(x: 0, y: 0, width: 200, height: 50)
CAGradientLayer涉及到一个坐标,该坐标体系以左上角为圆点(0,0),右下角为终点(1,1)
CAGradientLayer的startPoint是绘制阶级颜色的起始点&