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);//繪圖
效果: