CAGradientLayer得到渐变色效果

好久没写东西了,最近天天加班太可怕了- - 。。。
记录一下CAGradientLayer,感觉做一些效果的时候还是挺实用的。。。
暂时只是用这个类做出渐变色的效果,其它的效果还没太了解。。。像这样。。。

CAGradientLayer得到渐变色效果_第1张图片
FD38532E-433B-484E-8D45-C622C17D7285.png

这是一个很单纯的类。。。自身特有的属性。。。很少。。。
首先说一下下面两个属性:

@property CGPoint startPoint;
@property CGPoint endPoint;

这两个属性决定了颜色渐变的方向,引用网上的一张图:(出处:http://blog.it985.com/7986.html)

CAGradientLayer得到渐变色效果_第2张图片
040CEFBC-F86D-417A-94B3-A0AFCFF924E3.png

从图上我们很明显地看出坐标对于方向的影响,坐标系统的参数的范围是从0到1。startPoint代表起始方向坐标点,endPoint代表结束方向坐标点,两个坐标点决定了一个方向。例如你需要横着的渐变色,设置startPoint(0,0),endPoint(0,1).这个坐标系统和你的layer是什么形状的并没有关系,圆形、三角形之类的同样应用于这个坐标系统。

有了色彩的方向,下面该说色彩的设置了,这里有两个关键的属性,一个是颜色,另一个是颜色分割点:

@property(nullable, copy) NSArray *colors;
@property(nullable, copy) NSArray *locations;

我对这两个的理解如下:

这两个属性是对应着使用的,颜色数组代表一组你想渐变的颜色,而颜色分割点代表着这个颜色渐变的区域(区域值是按坐标系统划分的,0-1的范围)。通过分割点我们就可以控制某个颜色所占的区域大小。

举个栗子,三组颜色值,浅灰,灰和黑:

self.gradientLayer.colors = @[(__bridge id)[UIColor lightGrayColor].CGColor,
                                  (__bridge id)[UIColor grayColor].CGColor,(__bridge id)[UIColor blackColor].CGColor];

三个分割点:

self.gradientLayer.locations = @[@(0.2f) ,@(0.5),@(1.0f)];

个人理解的是:这个对应的效果应该是浅灰色在坐标系统的0.2-0.5部分渐变,0.2之前是纯浅灰色,灰色在0.5-1.0部分过渡,黑色在1.0部分过渡。显示效果就是最开始的那张图片。

你可能感兴趣的:(CAGradientLayer得到渐变色效果)