转换表格视图单元格内圆角的下载图像。关于图像下载过程,使用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)
}
}
}
1条答案
按热度按时间ql3eal8s1#
根据经验,在数据表示和最终UIImage对象之间的任何类型的操作都应该在某个后台线程上完成。
因此,在您的情况下,我会确保在后台线程上运行所有操作,并且只有在准备好将其传递或分配给UIImageView时才切换回主线程。