如何有效地将图像从服务器加载到tableView?

时间:2010-01-26 15:02:09

标签: iphone

我有一个表格视图,所有单元格都有UITableViewCellStyleSubtitle, 所有单元格的图像都来自服务器。

但是,这些图像不会经常更改。

有人可以告诉我如何改善用户体验吗?每次,用户向下滚动表格,它似乎在线检查并再次下载图像。

或者至少,向我展示一些可用于实现目标的选项。

谢谢,

2 个答案:

答案 0 :(得分:4)

Three20库有一个ImageView子类,它接受远程图像的URL并使用优秀的TTURLRequest / Caching机制来获取图像。它维护内存和磁盘上的缓存,并且只会在未缓存或已过期的情况下下载图像。您可以配置默认缓存过期时间或使用HTTP响应中的值。如果您使用TTTableViewController子类和相应的TTTableItem子类,您将免费获得适当的图像下载行为。但是,没有必要使用每三个组件来做你需要的。如果要集成到现有代码中,则可以创建自己的UITableViewCell子类,该子类使用TTImageView而不是标准UIImageView。然后,在您的单元格配置方法中,您可以设置默认占位符图像和要加载的URL,它将完全照顾其余部分。作为性能优化,您还应该在tableview控制器中实现UIScrollView委托方法,以在滚动期间暂停TTURLRequestQueue(查看TTTableViewController以了解如何完成此操作)。

答案 1 :(得分:1)

您可以尝试以下其中一种

  • 使用图像名称作为关键字创建字典并缓存其中所有提取的图像

  • tableView:cellForRowAtIndexPath:

  • 中缓存并重用整个UITableView单元格
  • 如果只有一张图片在tableView:cellForRowAtIndexPath:

  • 之外重复加载一张图片
  • 您写道图像每月都会更改 - 您可以在使用图像时将图像保存到磁盘,只需检查图像是否在后置刻录机上更改或按照给定的每日间隔重新下载图像。 Brian Chapados的回复似乎很有意思。

根据您的代码,可能还有很多其他方法可以改善图像加载。希望有所帮助...