tableView 滚动 cell 中设置圆角头像性能优化的问题

谈到设置圆角头像的问题,我想大多数人第一反应想到的是设置图像的 layer

let imageV: UIImageView = UIImageView()

imageV.layer.cornerRadius = 26

imageV.layer.masksToBounds = true

这是一种方式,但在开发中,这样设置圆角头像需要做切割,这时候就需要 CPU 进行计算,还有像设置阴影,设置透明,修改 alpha 值,这些都是不允许的,或者说这是很消耗性能的,特别是在 tableView 中,当我们去滚动 tableView 的时候,CPU 就需要做大量的计算,这是相当消耗性能的,所以想到下面的方式来做:

一般底层的东西效率都是最高的,所以我们想到使用绘制的办法,来设置圆角头像

func createCircleImage(color: UIColor = UIColor.white, size: CGSize = CGSize(width: 1, height: 1), callBack:@escaping (UIImage?)->()) {

DispatchQueue.global().async {

let rect = CGRect(origin: CGPoint.zero, size: size)

//1. 开始图形上下文

UIGraphicsBeginImageContext(size)

//2. 设置颜色

color.setFill()

//3. 颜色填充

UIRectFill(rect)

//圆形裁切

let path = UIBezierPath(ovalIn: rect)

path.addClip()

self.draw(in: rect)

//4. 从图形上下文获取图片

let image = UIGraphicsGetImageFromCurrentImageContext()

//5. 关闭图形上下文

UIGraphicsEndImageContext()

//在主线程更新UI

DispatchQueue.main.async {

callBack(image)

}

}

}

//设置圆角图像

image?.createCircleImage(size: CGSize(width: 35, height: 35), callBack: { (circleImage) in

self.userIcon.image = circleImage

})

这时在 滚动tableView 时,对于程序的性能就会优化很多

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容