一直绘图这方面知识就记的不牢固,每次画完过段时间又给忘了怎么画咯,最近需要画下渐变色,特此记录下。
一、使用CAGradientLayer
// 创建 CAGradientLayer 对象
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
// 设置 gradientLayer 的 Frame
gradientLayer.frame = self.bounds;
// 创建渐变色数组,需要转换为CGColor颜色
gradientLayer.colors = @[(id)kColorWithRGB(243, 199, 161).CGColor,
(id)kColorWithRGB(252, 100, 25).CGColor];
// 设置颜色变化点,取值范围 0.0~1.0
// gradientLayer.locations = @[@0 ,@1];
// 设置渐变颜色方向,左上点为(0,0), 右下点为(1,1)
gradientLayer.startPoint = CGPointMake(0, 0);
gradientLayer.endPoint = CGPointMake(0, 1);
// 添加渐变色到创建的 UIView 上去
[self.layer addSublayer:gradientLayer];
二、code
- (void)drawRect:(CGRect)rect {
// Drawing code
CGContextRef context = UIGraphicsGetCurrentContext();
// 绘制颜色渐变
// 创建色彩空间对象
CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();
// 创建起点颜色
CGColorRef beginColor = CGColorCreate(colorSpaceRef, (CGFloat[]){243/255.0f, 199/255.0f, 161/255.0f, 1});
// 创建终点颜色
CGColorRef endColor = CGColorCreate(colorSpaceRef, (CGFloat[]){252/255.0f, 100/255.0f, 25/255.0f, 1});
// 创建颜色数组
CFArrayRef colorArray = CFArrayCreate(kCFAllocatorDefault, (const void*[]){beginColor, endColor}, 2, nil);
// 创建渐变对象
CGGradientRef gradientRef = CGGradientCreateWithColors(colorSpaceRef, colorArray, (CGFloat[]){
0.0f, // 对应起点颜色位置
1.0f // 对应终点颜色位置
});
// 释放颜色数组
CFRelease(colorArray);
// 释放起点和终点颜色
CGColorRelease(beginColor);
CGColorRelease(endColor);
// 释放色彩空间
CGColorSpaceRelease(colorSpaceRef);
CGContextDrawLinearGradient(context, gradientRef, CGPointMake(0, 0), CGPointMake(0, 1), 0);
// 释放渐变对象
CGGradientRelease(gradientRef);
}
网友评论