UITableView 本地图片的快速加载

Posted

技术标签:

【中文标题】UITableView 本地图片的快速加载【英文标题】:Fast load of local images in UITableView 【发布时间】:2014-04-28 07:10:21 【问题描述】:

我正在将本地存储的 640*100 像素的图像加载到 UITableViewCell 中。

图像从磁盘异步加载(按需),存储到NSCache,然后放入主线程上的UITableViewCellUIImageView

我在单元格上出现闪烁,并且在快速滚动时单元格消失之前未加载某些图像。 (滚动速度大于加载速度)

我认为我不应该为在重用单元格之前不会出现的单元格加载图像(当滚动非常快时)

此外,将“布局”的图像存储在内存中甚至“预先绘制”可能是有益的,但我对这两个问题都没有很好的启发式方法。

我的单元格正在通过 UITableView 数据源传入的数据对象加载其内容。我不希望数据源管理图像的获取,因为我发现代码更简洁。但是现在我处于优化阶段,这是一个问题,因为单元格没有引用所有者UITableView,也不知道滚动速度或其他指标。

有没有人解决过类似的问题?有什么办法解决吗?

【问题讨论】:

NSCache、SDWebimage、AFNetworking 或其他许多工作的库,你想为此做一些谷歌。 请分享您创建单元格和加载图像的代码,这将是帮助您的一个很好的起点。 您是否尝试创建低分辨率图像副本以在用户滚动时加载,然后在停止滚动时加载全分辨率图像。 640*100 px for UITableViewCell Image 看起来很奇怪的分辨率,通常 30*30 或 60*60 对于单元格图像应该没问题。块 dispatch_async 对于从本地目录或核心数据加载非常有效。还有 UIImageJPEGRepresentation(yourImage, floatValue); // 0-1 可以帮助减小图像大小,但会影响质量。 【参考方案1】:

只需使用FastImageCache。它在内部使用 ImageTable 并存储缩略图 在此表中根据指定的格式。

【讨论】:

以上是关于UITableView 本地图片的快速加载的主要内容,如果未能解决你的问题,请参考以下文章

IOS优化加载图片到UITableView

UIImage加载本地图片的两种方式

JetpackDataBinding 架构组件 ④ ( 使用 @BindingAdapter 注解为布局组件绑定自定义逻辑 | 网络图片加载 | 本地图片加载 )

Unity加载本地图片的2种方式

Electron 加载本地图片的方法

MAUI Blazor 加载本地图片的解决方案