以前设置图片圆角,都是用下面这几句代码轻松搞定
imgView.layer.cornerRadius = 10;
// 这一行代码是很消耗性能的
imgView.clipsToBounds = YES;
这在实现功能上没有什么不同,但是在实现瀑布流这种大批量图片圆角处理时就会出现页面卡顿现象;
所以呢,问题来了。这时候有什么好的方法解决呢
别急!!!!马上呈上解决方案
怎么办呢?
方法一:(这个方法一定要写在Image的分类里面,并且圆角大小自己可控)
(UIImage *)yye_imageWithCornerRadius:(CGFloat)radius {
CGRect rect = (CGRect){0.f, 0.f, self.size};
UIGraphicsBeginImageContextWithOptions(self.size, NO, UIScreen.mainScreen.scale);
CGContextAddPath(UIGraphicsGetCurrentContext(), [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:radius].CGPath);
// 裁剪
CGContextClip(UIGraphicsGetCurrentContext());
// 将图片画上去
[self drawInRect:rect];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
方法二:(这时候自己想要一个切成圆的图片)
/* 设置圆形图片(放到分类中使用) /
(UIImage *)yye_cutCircleImage {
UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0);
// 获取上下文
CGContextRef ctr = UIGraphicsGetCurrentContext();
// 设置圆形
CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height);
CGContextAddEllipseInRect(ctr, rect);
// 裁剪
CGContextClip(ctr);
// 将图片画上去
[self drawInRect:rect];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
网友评论