一直繪圖這方面知識(shí)就記的不牢固巫俺,每次畫完過(guò)段時(shí)間又給忘了怎么畫咯,最近需要畫下漸變色剖淀,特此記錄下纯蛾。
一、使用CAGradientLayer
// 創(chuàng)建 CAGradientLayer 對(duì)象
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
// 設(shè)置 gradientLayer 的 Frame
gradientLayer.frame = self.bounds;
// 創(chuàng)建漸變色數(shù)組纵隔,需要轉(zhuǎn)換為CGColor顏色
gradientLayer.colors = @[(id)kColorWithRGB(243, 199, 161).CGColor,
(id)kColorWithRGB(252, 100, 25).CGColor];
// 設(shè)置顏色變化點(diǎn)翻诉,取值范圍 0.0~1.0
// gradientLayer.locations = @[@0 ,@1];
// 設(shè)置漸變顏色方向,左上點(diǎn)為(0,0), 右下點(diǎn)為(1,1)
gradientLayer.startPoint = CGPointMake(0, 0);
gradientLayer.endPoint = CGPointMake(0, 1);
// 添加漸變色到創(chuàng)建的 UIView 上去
[self.layer addSublayer:gradientLayer];
二巨朦、code
- (void)drawRect:(CGRect)rect {
// Drawing code
CGContextRef context = UIGraphicsGetCurrentContext();
// 繪制顏色漸變
// 創(chuàng)建色彩空間對(duì)象
CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();
// 創(chuàng)建起點(diǎn)顏色
CGColorRef beginColor = CGColorCreate(colorSpaceRef, (CGFloat[]){243/255.0f, 199/255.0f, 161/255.0f, 1});
// 創(chuàng)建終點(diǎn)顏色
CGColorRef endColor = CGColorCreate(colorSpaceRef, (CGFloat[]){252/255.0f, 100/255.0f, 25/255.0f, 1});
// 創(chuàng)建顏色數(shù)組
CFArrayRef colorArray = CFArrayCreate(kCFAllocatorDefault, (const void*[]){beginColor, endColor}, 2, nil);
// 創(chuàng)建漸變對(duì)象
CGGradientRef gradientRef = CGGradientCreateWithColors(colorSpaceRef, colorArray, (CGFloat[]){
0.0f, // 對(duì)應(yīng)起點(diǎn)顏色位置
1.0f // 對(duì)應(yīng)終點(diǎn)顏色位置
});
// 釋放顏色數(shù)組
CFRelease(colorArray);
// 釋放起點(diǎn)和終點(diǎn)顏色
CGColorRelease(beginColor);
CGColorRelease(endColor);
// 釋放色彩空間
CGColorSpaceRelease(colorSpaceRef);
CGContextDrawLinearGradient(context, gradientRef, CGPointMake(0, 0), CGPointMake(0, 1), 0);
// 釋放漸變對(duì)象
CGGradientRelease(gradientRef);
}