如果项目中经常需要使用该方法时可以新建一个UIimage的分类,并将方法封装到其分类中.
绘制方法的封装:
//绘制指定颜色图片
+ (UIImage *)createImageWithColor:(UIColor *)color RectSize:(CGSize)rectSize
CornerRadius:(float)cornerRadius{
//直接绘制图像方法
// CGRect rect=CGRectMake(0.0f, 0.0f, 50.0f, 50.0f);
// UIGraphicsBeginImageContext(rect.size);
// CGContextRef context = UIGraphicsGetCurrentContext();
// CGContextSetFillColorWithColor(context, [color CGColor]);
// CGContextFillRect(context, rect);
// UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
// UIGraphicsEndImageContext();
//带圆角图像的绘制方法
UIImage *theImage;
CGRect rect = CGRectMake(0.0f, 0.0f, rectSize.width, rectSize.height);
UIGraphicsBeginImageContext(rect.size); //开始画线
[theImage drawInRect:CGRectMake(0, 0, rect.size.width, rect.size.height)];
//获取上下文
CGContextRef context = UIGraphicsGetCurrentContext();
//边框大小
CGContextSetLineWidth(context, 1);
//边框颜色
CGContextSetStrokeColorWithColor(context, COLORS_CLEAR.CGColor);
//矩形填充颜色
CGContextSetFillColorWithColor(context, [color CGColor]);
/*
*
将要绘制的图像大小,分割成8个点,每两个点可以可以确定一条射线,每两条射线相交处可以设置圆弧.
当前方法中先绘制的右下角,
例如,将要绘制的圆角图片大小为:宽100,高100 圆角5,则需要的点分别为:
A(100,10)
B(100,100)
C(90,100)
D(0,100)
E(0,90)
F(0,0)
G(10,0)
H(100,0)
*
*/
//绘制图像及圆角
CGContextMoveToPoint(context, rectSize.width, cornerRadius * 2); // 开始坐标右边开始
CGContextAddArcToPoint(context, rectSize.width, rectSize.height, rectSize.width - 10, rectSize.height, cornerRadius); // 右下角
CGContextAddArcToPoint(context, 0, rectSize.height, 0, rectSize.height - 10, cornerRadius); // 左下角
CGContextAddArcToPoint(context, 0, 0, cornerRadius * 2, 0, cornerRadius); // 左上角
CGContextAddArcToPoint(context, rectSize.width, 0, rectSize.width, cornerRadius * 2, cornerRadius); // 右上角
CGContextDrawPath(context, kCGPathFillStroke); //根据当前坐标绘制路径
theImage = UIGraphicsGetImageFromCurrentImageContext();//获取绘图
//拉伸当前图像
CGFloat h = theImage.size.height * 0.5;
CGFloat w = theImage.size.width * 0.5;
UIImage *rsizeImg = [theImage resizableImageWithCapInsets:UIEdgeInsetsMake(h, w, h, w) resizingMode:UIImageResizingModeStretch];
return rsizeImg;
}
使用时方法:
UIButton *testBtn = [[UIButton alloc]initWithFrame:CGRectMake(0,0, 85, 40)];
[testBtn setImage:[UIImage createImageWithColor:[UIColor grarColor] RectSize:testBtn.size CornerRadius:5] forState:UIControlStateNormal];
[testBtn setImage:[UIImage createImageWithColor:[UIColor yellowColor] RectSize:testBtn.size CornerRadius:5] forState:UIControlStateHighlighted]
在实际使用时的效果: