部分属性和方法 | 介绍 |
---|---|
colors | 颜色渐变,每个梯度停止的颜色,可动画 |
locations | 相对坐标,颜色开始渐变的相对位置,可动画 |
startPoint | 相对坐标,开始位置 |
endPoint | 相对坐标,结束为止,和startPoint 可以设置颜色渐变的方向 |
type | 就一个默认值kCAGradientLayerAxial,按像素均匀变化 |
注: 假设现在设置colors为 [黑,白,黑],locations为[0.25, 0.5, 0.75],则表示 0-0.25显示为黑色,.25-.5 黑到白的渐变 , .5-.75 白到黑的渐变,.75-1黑色
搜集到的入门好文:CAGradientLayer的一些属性解析
Demo效果
部分代码
NSMutableArray *arr = [_gradient.colors mutableCopy];
id lastColor = [arr lastObject];
[arr removeObject:lastColor];
[arr insertObject:lastColor atIndex:0];
_gradient.colors = arr;
_progress += 0.1/60;
_progress = MIN(1, _progress);
#if LineOrCircle == 1
//line
CGRect maskRect = _maskLayer.bounds;
maskRect.size.width = self.view.frame.size.width * _progress;
_maskLayer.frame = maskRect;
#elif LineOrCircle == 2
//circle
_maskLayer.strokeStart = 0;
_maskLayer.strokeEnd = _progress;
#endif
CABasicAnimation *animation = [CABasicAnimation animation];
animation.keyPath = @"colors";
animation.toValue = arr;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
animation.duration = 1/60.0;
[animation setRemovedOnCompletion:YES];
[animation setFillMode:kCAFillModeForwards];
[_gradient addAnimation:animation forKey:nil];