美文网首页
tableView 滚动 cell 中设置圆角头像性能优化的问题

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

作者: 请叫我大帅666 | 来源:发表于2017-04-23 11:55 被阅读0次

    谈到设置圆角头像的问题,我想大多数人第一反应想到的是设置图像的 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 中设置圆角头像性能优化的问题

          本文链接:https://www.haomeiwen.com/subject/loxlpttx.html