//这里实现普通生成图片的方法
- (void)drawRect:(CGRect)rect {
CGRect cxRect = CGRectMake(0, 0, 100, 100);
UIGraphicsBeginImageContextWithOptions(cxRect.size, NO, 0);
[[UIColor redColor] setFill];
UIRectFill(cxRect);
UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(20, 20, 100, 100)];
imageView.image = image;
[self addSubview:imageView];
}
//这里实现渐变颜色生成图片的方法
- (void)drawRect:(CGRect)rect {
CGRect cxRect = CGRectMake(0, 0, 1, 1);
UIGraphicsBeginImageContextWithOptions(cxRect.size, NO, 0);
CGContextRef context = UIGraphicsGetCurrentContext();
UIColor * beginColor = [UIColor greenColor];
UIColor * endColor = [UIColor redColor];
drawLinearGradient(context, cxRect, beginColor.CGColor, endColor.CGColor);
CGContextRestoreGState(context);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(20, 20, 100, 100)];
imageView.image = image;
[self addSubview:imageView];
}
void drawLinearGradient(CGContextRef context, CGRect rect, CGColorRef startColor, CGColorRef endColor)
{
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGFloat locations[] = { 0.0, 1.0 };
NSArray *colors = @[(__bridge id) startColor, (__bridge id) endColor];
CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef) colors, locations);
CGPoint startPoint = CGPointMake(rect.size.width/2, 0);
CGPoint endPoint = CGPointMake(rect.size.width/2, rect.size.height/1.5);
CGContextSaveGState(context);
CGContextAddRect(context, rect);
CGContextClip(context);
CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0);
CGContextSetStrokeColorWithColor(context, [[UIColor clearColor] CGColor]);
}