CAGradientLayer

部分属性和方法 介绍
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效果

直线
CAGradientLayer_第1张图片
圆环
文字
部分代码
    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];

你可能感兴趣的:(CAGradientLayer)