给UIImageView设置圆角
1、通常情况下图片会价格圆角,这样看起来会美观一些,而我们通常添加圆角的方法都是:imageView.layer.cornerRadius = 10;imageView.clipsToBounds = YES; 这样做会消耗性能,而这样做显得非常简单方便,如果在较多图片的情况下不建议这样做,
2、可以给UIImage添加生成图片圆角的扩展API,如:
- (UIImage *)mt_imageWithCornerRadius:(CGFloat)radius {
CGRect rect = (CGRect){0.f, 0.f, self.size};
// 创建一个基于位图的上下文(context),并将其设置为当前上下文(context) size图片大小,opaque是否透明,scale缩放比列
UIGraphicsBeginImageContextWithOptions(self.size, NO, UIScreen.mainScreen.scale);
// 添加路径 UIGraphicsGetCurrentContext(); 设置绘图的上下文 使用贝塞尔曲线设置路径
CGContextAddPath(UIGraphicsGetCurrentContext(),[UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:radius].CGPath);
// context裁剪路径,后续操作的路径
CGContextClip(UIGraphicsGetCurrentContext());
[self drawInRect:rect];
// 获取修改之后的image
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
// 最后移除栈顶的基于当前位图的图形上下文。
UIGraphicsEndImageContext();
return image;
}
3、最后在使用image的时候调用即可:
UIImage *mtImage = [[UIImage imageNamed:@“imageName”] mt_imageWithCornerRadius:10];
imageView.image = mtImage;
这里需要注意的是圆角设置的时候你过你的image大小和imageVIew大小不一致,那么你的小心使用圆角的数值,不然可能得不到你预想的圆角大小,因为这里是获取图片大小然后设置传入数值的圆角,如果image和imageView大小不一致,那么会同比缩放;