tableView 滚动 cell 中设置圆角头像性能优化的问题
来源:互联网 发布:久量led台灯 知乎 编辑:程序博客网 时间:2024/06/07 21:27
谈到设置圆角头像的问题,我想大多数人第一反应想到的是设置图像的 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 时,对于程序的性能就会优化很多
- tableView 滚动 cell 中设置圆角头像性能优化的问题
- 优化tableview cell的滚动速度心得
- tableView cell性能优化
- tableview中cell的设置
- tableview中cell的设置
- tableview中cell设置的注意事项
- tableview滚动加载cell时优化处理
- IOS中TableView的cell显示问题
- tableView- 性能优化,cell的循环利用三种方式
- TableView 性能优化之 Cell 的复用原理
- 【iOS】TableView的footerView不随cell滚动而停留在tableView底部的问题
- TableView的footerView不随cell滚动而停留在tableView底部的问题,ios tableviewfooter
- 设置tableview的cell颜色
- 解决多行cell 设置头像变圆 导致变卡的问题
- tableView性能优化cell循环利用 && 自定义cell
- 去掉tableview中cell的分割线的设置
- 怎样在ios开发中设置tableview的cell颜色
- tableView的性能优化
- Windows环境下docker的安装与配置
- SQL数据类型nchar,char,varchar与nvarchar区别
- PCA的数学原理
- Spark机器学习库(MLlib)官方指南手册中文版
- Spring Boot 快速搭建及简单演示
- tableView 滚动 cell 中设置圆角头像性能优化的问题
- 操作系统存储管理之虚拟存储与分页式虚拟存储系统
- 蓝牙扫描 LeScanCallback 方法 不回调
- ZOJ 3963 Heap Partition(贪心)
- PXE网络安装Linux操作系统原理与详细过程
- 内容提供器
- APP全栈工程师修炼之路(一)
- LightOJ
- iOS8下 presentViewController的透明部分 变成黑色不透明了