swift - UITableViewCell 中快速、模糊的图像运行不流畅
问题描述
我想要做的是显示来自网络的模糊图像列表。这适用于我的自定义 UITableViewCell 中的此代码
func blurImage(image:UIImage, imageView: UIImageView) {
DispatchQueue.global(qos: .background).async {
let inputImage = CIImage(image: image)
let originalOrientation = image.imageOrientation
let originalScale = image.scale
let filter = CIFilter(name: "CIGaussianBlur")
filter?.setValue(inputImage, forKey: kCIInputImageKey)
filter?.setValue(15.0, forKey: kCIInputRadiusKey)
let outputImage = filter?.outputImage
var cgImage:CGImage?
if let outputImage = outputImage{
cgImage = self.context.createCGImage(outputImage, from: (inputImage?.extent)!)
}
DispatchQueue.main.async {
if let cgImageA = cgImage{
imageView.image = UIImage(cgImage: cgImageA, scale: originalScale, orientation: originalOrientation)
}
}
}
}
问题是模糊计算需要一些时间,并且认为它在 BG 线程上滚动不是那么快和流畅,就好像我根本没有模糊效果一样。
有没有办法让它运行更流畅或显示占位符图像,直到准备好再次绘制模糊图像,从而实现平滑滚动?
解决方案
步骤 1) 不要将 qos: .background 用于用户启动的任务。文档说:后台任务在所有任务中的优先级最低。将此类分配给您在应用程序在后台运行时用于执行工作的任务或调度队列。
推荐阅读
- java - 我可以在这个用例中使用 NamedJdbcTemplate 吗?
- java - 如何订阅两个不同的发布者
- excel - 如何使用带有重复宏的循环?
- compilation - 编译后 LLVM IR 到可执行段错误
- schedule - 如何根据 Anylogic 中的火车到达时间表将行人从等候区释放?
- node.js - TypeScript 内存错误未终止 Docker 构建
- sql - 在另一个查询的 WHERE 子句中使用一个 PostGIS SQL 查询的结果
- python - 将数组的偶数索引元素乘以 2,数组的奇数索引元素乘以 3
- python - x 和 y 的大小必须相同
- css - 工具提示被 div 纯 CSS 截断