代码之家  ›  专栏  ›  技术社区  ›  Hoang Pham

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

  •  2
  • Hoang Pham  · 技术社区  · 14 年前

    我有一个表格视图,所有单元格都有一个UITableViewCellStyle子标题, 所有单元格的图像都是从服务器获取的。

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

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

    或者至少,给我展示一些可以实现目标的选项。

    谢谢,

    2 回复  |  直到 13 年前
        1
  •  4
  •   Brian Chapados    14 年前

    这个 Three20 库有一个ImageView子类,它接受远程映像的URL,并使用优秀的tturlRequest/缓存机制来获取映像。它维护一个内存和磁盘上的缓存,并且仅在未缓存或已过期的情况下下载图像。您可以配置默认缓存过期时间,或者使用HTTP响应中的值。如果使用ttTableViewController子类和相应的ttTableItem子类,您将免费获得适当的图像下载行为。但是,不必使用每三个组件来完成所需的工作。如果要集成到现有代码中,可以创建自己的UITableViewCell子类,该子类使用TTIMageView而不是标准的UIImageView。然后,在单元配置方法中,您可以设置一个默认的占位符图像和一个要加载的URL,其余的就由它来处理了。作为性能优化,您还应该在TableView控制器中实现uiScrollView委托方法,以便在滚动期间挂起tturlRequestQueue(查看ttTableViewController以了解如何完成)。

        2
  •  1
  •   Niels Castle    14 年前

    您可以尝试下列方法之一

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

    • 缓存并重用中的整个UITableView单元格 tableView:cellForRowAtIndexPath:

    • 如果只是一个图像重复加载到外部 表视图:cellForRowatindexPath:

    • 你写的图像每月都会发生变化-你可以在使用时将图像保存到磁盘上,然后检查图像是否在后台发生了变化,或者在给定的每日间隔重新下载图像。布莱恩·查帕多斯的回答似乎很有趣。

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