在iOS开发初期在设置圆角图片的时候总是会使用两句代码:
self.imageView.layer.cornerRadius = 5.0f;
self.imageView.layer.masksToBounds = YES;
可听说这两句代码会有问题,问题:会强制Core Animation提前渲染屏幕的离屏绘制, 而离屏绘制就会给性能带来负面影响,会有卡顿的现象出现,尤其在这样设置的圆角图片比较多的时候,如每个cell上都有一个圆角头像。(本人暂时还没发现这个问题,而且在面试的时候我还被问过这个问题)
利用画的方式设置圆角图片就可以避免上面的问题,我将具体的实现放到了UIImage的一个分类中,具体代码:
- (UIImage *)circleImageWithSize:(CGSize)imageSize andImage:(UIImage *)originalImage{ // NO代表透明 UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0); // 获得上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); // 添加一个圆 CGRect rect = CGRectMake(0, 0, imageSize.width, imageSize.height); CGContextAddEllipseInRect(ctx, rect); // 裁剪 CGContextClip(ctx); // 将图片画上去 [originalImage drawInRect:rect]; UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); // 关闭上下文 UIGraphicsEndImageContext(); return image; }
demo地址:https://gitee.com/liangsenliangsen/circleImage
本篇文章到这里就结束了,愿大家加班不多工资多,男同胞都有女朋友,女同胞都有男朋友。😊