tableView 滾動 cell 中設置圓角頭像性能優化的問題

談到設置圓角頭像的問題,我想大多數人第一反應想到的是設置圖像的 layerapi

         let imageV: UIImageView = UIImageView()async

         imageV.layer.cornerRadius = 26性能

         imageV.layer.masksToBounds = true優化

 這是一種方式,但在開發中,這樣設置圓角頭像須要作切割,這時候就須要 CPU 進行計算,還有像設置陰影,設置透明,修改 alpha 值,這些都是不容許的,或者說這是很消耗性能的,特別是在 tableView 中,當咱們去滾動 tableView 的時候,CPU 就須要作大量的計算,這是至關消耗性能的,因此想到下面的方式來作:spa

  通常底層的東西效率都是最高的,因此咱們想到使用繪製的辦法,來設置圓角頭像線程

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

            DispatchQueue.global().async {ip

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

            //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 時,對於程序的性能就會優化不少

相關文章
相關標籤/搜索