感谢网上亲们的资源,简单的实现线性渐变效果,分一二主要是对照两个不同的效果:
代码:
- (void)drawRect:(CGRect)rect
{
//创建上下文
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGContextSaveGState(currentContext);
//色彩空间
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
//起点色
UIColor *staColor = [UIColor redColor];
CGFloat *staColorComponents = (CGFloat *)CGColorGetComponents([staColor CGColor]);
//终点色
UIColor *endColor = [UIColor greenColor];
CGFloat *endColorComponents = (CGFloat *)CGColorGetComponents([endColor CGColor]);
//获取每种颜色分量写入数组中
CGFloat colorComponents[8] = {
staColorComponents[0],
staColorComponents[1],
staColorComponents[2],
staColorComponents[3],
endColorComponents[0],
endColorComponents[1],
endColorComponents[2],
endColorComponents[3]
};
//渐变位置设置
CGFloat colorIndices[2] = {0.0f,0.7f};
//构建渐变对象句柄
CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace, (const CGFloat*)&colorComponents, (const CGFloat*)&colorIndices,2);
//释放色彩空间
CGColorSpaceRelease(colorSpace);
CGPoint staPoint,endPoint;
staPoint = CGPointMake(20, 30);
endPoint = CGPointMake(20, 80);
CGContextDrawLinearGradient(currentContext, gradient, staPoint, endPoint, 0);
CGGradientRelease(gradient);
CGContextRestoreGState(currentContext);
}