前一段时间公司项目有个需求需要做一个圆弧形状的进度条,这个需求本来还算常见,但比较蛋疼的是颜色要求是渐变色的。
通常这种不造怎么找第三方库的需求,果断手撸代码(就是这种坏习惯,现在项目里头的自定义控件跟第三方库修改都由我来做了。。)
首先绘制一个渐变色方形看看
创建一个继承UIView的GradientRectView。在drawRect中添加如下代码。
// 创建RGB色彩空间,创建这个以后,context里面用的颜色都是用RGB表示
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
// 渐变色的颜色
NSArray *colorArr = @[
(id)[UIColor blueColor].CGColor,
(id)[UIColor yellowColor].CGColor
];
// CGGradientCreateWithColors(CGColorSpaceRef __nullable space, CFArrayRef cg_nullable colors, const CGFloat * __nullable locations)
// 通过成对的颜色值(colors)和位置(locations)创建一个渐变色,colors是一个由CGColor对象组成的非空数组,如果space非空,所有颜色都会转换到该色彩空间,并且渐变将绘制在这个色彩空间里面;否则(space为NULL),每一种颜色将会被转换并且绘制在一般的RGB色彩空间中。如果locations为NULL,第一个颜色在location 0,最后一个颜色在location 1, 并且中间的颜色将会等距分布在中间。l