【问题标题】:Fast load of local images in UITableViewUITableView 本地图片的快速加载
【发布时间】: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 可以帮助减小图像大小,但会影响质量。

标签: ios objective-c uitableview uiimageview


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    相关资源
    最近更新 更多