写了一个将矩形图片裁剪为圆角矩形的UIImage分类,可以避免大量的使用masksToBounds从而产生离屏渲染。
1.思路
首先利用CoreGraphics绘制出一个圆角矩形的上下文,然后将图片画到上下文中,最后通过上下文获取裁剪好的图片。
2.核心代码
- (UIImage *)setCornerWithRadius:(CGFloat)radius andSize:(CGSize)size
{
//开启图形上下文
UIGraphicsBeginImageContext(size);
//绘制圆角矩形
CGRect rect = CGRectMake(0, 0, size.width, size.height);
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rect byRoundingCorners:UIRectCornerAllCorners cornerRadii:CGSizeMake(radius, radius)];
//将Path添加到上下文中
CGContextAddPath(UIGraphicsGetCurrentContext(), path.CGPath);
//裁剪上下文
CGContextClip(UIGraphicsGetCurrentContext());
//将图片绘制到上下文中
[self drawInRect:rect];
//设置绘制模式
CGContextDrawPath(UIGraphicsGetCurrentContext(), kCGPathStroke);
//获取图片
UIImage *output = UIGraphicsGetImageFromCurrentImageContext();
//关闭上下文
UIGraphicsEndImageContext();
//返回裁剪好的图片
return output;
}
3.源码
源码放在了github上,欢迎指正,觉得不错的star一下呀!
网友评论