[英]Initial scroll lag in UITableView cells with resized large images?
[英]UITableView Cell Background Images initial scroll lag
我有一个应用程序,其中有一个表格视图严格从资产中提取单元格背景图像。 我注意到,由于将这些图像加载到表格视图中,因此fps在初始滚动时下降了。 (如果我只是用黑盒替换UIImage或为所有相同的图像提供无缝滚动)。 首次加载表格视图中的所有图像后,滚动操作将没有延迟。
当前,每个图像可以在1.8MB和3MB之间变化。 对于3x图像,长宽比约为1125x295,而对于1x和2x设备则按比例缩小。 在设置背景图像时也会调用initial.scaleAspectFill,但是我不知道这是否是问题。 我发现6s,X,ipad mini和pro存在此问题。
这是设置背景图像的方法
fileprivate let backgroundImageView: UIImageView = {
let view = UIImageView(axId: "backgroundImage")
view.contentMode = .scaleAspectFill
view.layer.masksToBounds = true
return view
}()
在单元格的初始化菜单中,将backgroundImageView作为子视图添加到contentView中。
您可以执行#2从背景提取图像。 从backgroundThread将图像加载到内存,然后通过mainThread将其分配
fileprivate let backgroundImageView: UIImageView = {
let view = UIImageView()
DispatchQueue.global().async {
let image = getFromSource()
DispatchQueue.main.async {
view.image = image
view.contentMode = .scaleAspectFill
view.layer.masksToBounds = true
}
}
return view
}()
或者,您可以使用KingFisher来缓存图像,该软件具有其自己的缓存图像的方式。 漂亮整齐。
另外,您可能想实现prepareForReuse,以便在要重用单元格时卸载以前的图像。
override func prepareForReuse() {
super.prepareForReuse()
//Do your clean up here
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.