CAGradientLayer
是用来生成两种或更多颜色平滑渐变的。用Core Graphics复制一个CAGradientLayer
并将内容绘制到一个普通图层的寄宿图也是有可能的,但是CAGradientLayer
的真正好处在于绘制使用了硬件加速。
基础渐变
这些渐变色彩放在一个数组中,并赋给colors属性。这个数组成员接受CGColorRef类型的值(并不是从NSObject派生而来),所以我们要用通过bridge转换以确保编译正常。
CAGradientLayer也有startPoint和endPoint属性,他们决定了渐变的方向。这两个参数是以单位坐标系进行的定义,所以左上角坐标是{0, 0},右下角坐标是{1, 1},如下代码:
- (void)viewDidLoad {
[super viewDidLoad];
UIView *colorView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
[self.view addSubview:colorView];
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = colorView.bounds;
[colorView.layer addSublayer:gradientLayer];
// set gradient colors
gradientLayer.colors = @[(__bridge id)[UIColor redColor].CGColor, (__bridge id)[UIColor blueColor].CGColor];
// set gradient start and end points
gradientLayer.startPoint = CGPointMake(0, 0);
gradientLayer.endPoint = CGPointMake(0.5, 0.5);
}
显示结果:

注意: colors接收的是CGColorRef类型的值,此处不转换也不会报错。
原文出处: 钟声. “ios核心动画高级技巧”。
网友评论