ios UITableView在垂直滚动期间似乎有点卡住

dddzy1tm  于 2023-02-26  发布在  iOS
关注(0)|答案(1)|浏览(128)

转换表格视图单元格内圆角的下载图像。关于图像下载过程,使用SDWebImage并在完成块内制作圆角。因此,在垂直滚动期间感觉到卡住问题的原因。他们是否需要任何调度来克服该卡住问题,以实现平滑滚动...

func circularImage(size: CGSize?) -> UIImage? {
        let newSize = size ?? self.size
        
        let minEdge = min(newSize.height, newSize.width)
        let size = CGSize(width: minEdge, height: minEdge)
        
        UIGraphicsBeginImageContextWithOptions(size, false, 0.0)
        let context = UIGraphicsGetCurrentContext()
        
        self.draw(in: CGRect(origin: CGPoint.zero, size: size), blendMode: .copy, alpha: 1.0)
        
        context?.setBlendMode(.copy)
        context?.setFillColor(UIColor.clear.cgColor)
        
        let rectPath = UIBezierPath(rect: CGRect(origin: CGPoint.zero, size: size))
        let circlePath = UIBezierPath(ovalIn: CGRect(origin: CGPoint.zero, size: size))
        rectPath.append(circlePath)
        rectPath.usesEvenOddFillRule = true
        rectPath.fill()
        
        let result = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        
        return result
    }

和在tableview单元格内部。

if let thumbImageUrlUW = valueUW.thumbImageUrl {
                    UIImageView().sd_setImage(with: URL(string: thumbImageUrlUW)) { (thumbImage, _, _, _) in
                        if let thumbImageUW = thumbImage, let roundedThumbImage = thumbImageUW.circularImage(size: imageSize) {
                            valueUW.thumbImage = roundedThumbImage
                            colorsUW.remove(at: index)
                            colorsUW.insert(valueUW, at: index)
                        }
                    }
                }

ql3eal8s

ql3eal8s1#

根据经验,在数据表示和最终UIImage对象之间的任何类型的操作都应该在某个后台线程上完成。
因此,在您的情况下,我会确保在后台线程上运行所有操作,并且只有在准备好将其传递或分配给UIImageView时才切换回主线程。

相关问题