部分屬性和方法 | 介紹 |
---|---|
colors | 顏色漸變,每個梯度停止的顏色,可動畫 |
locations | 相對坐標(biāo)放仗,顏色開始漸變的相對位置,可動畫 |
startPoint | 相對坐標(biāo)润绎,開始位置 |
endPoint | 相對坐標(biāo),結(jié)束為止诞挨,和startPoint 可以設(shè)置顏色漸變的方向 |
type | 就一個默認(rèn)值kCAGradientLayerAxial莉撇,按像素均勻變化 |
注: 假設(shè)現(xiàn)在設(shè)置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];