void drawLinearGradient(CGContextRef context,
CGRect rect,
CGColorRef startColor,
CGColorRef endColor)
{
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGFloat locations[] = {0.0,1.0}; //颜色所在位置
NSArray *colors = [NSArrayarrayWithObjects:(id)startColor,(id)endColor, nil];//渐变颜色数组
CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (CFArrayRef) colors, locations);//构造渐变
CGPoint startPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect));
CGPoint endPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect));
CGContextSaveGState(context);//保存状态,主要是因为下面用到裁剪。用完以后恢复状态。不影响以后的绘图
CGContextAddRect(context, rect);//设置绘图的范围
CGContextClip(context);//裁剪
CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0);//绘制渐变效果图
CGContextRestoreGState(context);//恢复状态
CGGradientRelease(gradient);
CGColorSpaceRelease(colorSpace);
}
//使用
CGContextRef context = UIGraphicsGetCurrentContext();
CGColorRef whiteColor = [UIColorcolorWithRed:1.0green:1.0blue:1.0alpha:1.0].CGColor;
CGColorRef lightGrayColor = [UIColorcolorWithRed: 230.0 / 255.0
green: 230.0 / 255.0
blue: 230.0 / 255.0
alpha:1.0].CGColor;
CGRect paperRect = self.bounds;
drawLinearGradient(context, paperRect, whiteColor,lightGrayColor);
CGContextSetStrokeColorWithColor(context, lightGrayColor);
CGRect newrRect = CGRectInset(paperRect, 1.5, 1.5);//构造位置
CGContextSetLineWidth(context, 1);//设置笔宽
CGContextStrokeRect(context, newrRect);//绘图
效果:
函数部分主要是渐变效果
后面的是笔刷画一条虚拟的边框。