CAGradientLayer 简介
CAGradientLayer是CALayer图层类的子类,用于处理渐变色的层结构。
CAGradientLayer的渐变色可以做隐式动画。
CAGradientLayer和CAShapeLayer配合使用可实现复杂效果。
CAGradientLayer可以用作PNG的遮罩效果。
CAGradientLayer 属性介绍
colors:渐变颜色数组
locations:渐变颜色的区间分布(分割点),locations的数组长度和colors一致。这个属性可不设,默认是nil,系统会平均分布颜色如果有特定需要可设置,数组设置为0 ~ 1之间单调递增。
startPoint:映射locations中起始位置,用单位向量表示。比如(0, 0)表示从左上角开始变化。默认值是:(0.5, 0.0)。
endPoint:映射locations中结束位置,用单位向量表示。比如(1, 1)表示到右下角变化结束。默认值是:(0.5, 1.0)。
type:默认值是kCAGradientLayerAxial,表示按像素均匀变化。
CAGradientLayer 坐标系统
CAGradientLayer的坐标系统是从坐标(0,0)到(1,1)绘制的矩形。
CAGradientLayer的frame值的size不为正方形的话,坐标系统会被拉伸。
CAGradientLayer的startPoint与endPoint会直接影响颜色的绘制方向。
CAGradientLayer的颜色分割点是以0~1的比例来计算的,颜色分割点为渐变色开始或终止的地方。
实例代码:
@interface ViewController (){
}
@property (weak, nonatomic) IBOutlet UIView *baseView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
_baseView.backgroundColor = [UIColor grayColor];
//设置渐变层
CAGradientLayer * gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = CGRectMake(0, 0, _baseView.frame.size.width, _baseView.frame.size.height);
[_baseView.layer addSublayer:gradientLayer];
//设置渐变色
gradientLayer.colors = @[(__bridge id)[UIColor redColor].CGColor,(__bridge id)[UIColor greenColor].CGColor];
//设置颜色分割点
gradientLayer.locations = @[@(0.2),@(0.9)];
//设置起始点和结束点
gradientLayer.startPoint = CGPointMake(0, 0);
gradientLayer.endPoint = CGPointMake(1, 1);
}