如何在iOS应用中处理大量图像的显示,搜索和过滤?

时间:2015-12-04 02:07:13

标签: ios image uicollectionview

我有一个网络服务,作为数字资产管理器的一种形式。我们的一些用户在其帐户中存储了数千张图像。我们想给他们一个iPhone应用程序,让他们访问这些图像。我们可以使用无限滚动但我们希望某种形式的uicollectionview表由日期分割,并带有可以滚动并跳转到的侧索引列表。要做到这一点,我们需要将他们的所有图像下载到一个集合视图中,这看起来很疯狂。

其他人如何处理大量图像的显示,搜索和过滤?

1 个答案:

答案 0 :(得分:0)

通常,当需要从Web服务(或文件系统)下载大量数据时,密钥不是一次性完成所有操作,而是将其分区为可管理的部分,您可以根据需要加载和卸载。没有一种方法可以做到这一点,但这是一般的想法。

要管理此过程,下载描述所有内容的完整索引(如图像URL的json列表)可能会有所帮助,而无需下载数据库中的每个图像或数据(但不是必需的 - 这不会与数百万条目一起工作)。这使您可以搜索和浏览内容,而无需大量下载。

在您的问题中,听起来您的图像按日期范围分组。您可以探索的可能程序可能是:

  1. 下载所有图像的索引及其关联日期,并将其加载到内存中。 (成千上万应该没问题)。

    images : [
       {
          url: "http://someurl/image.png",
          name: "Great Image!", 
          date: "12/3/15"
          // possibly include more data like search tags...
       },..
    ]
    
  2. 开始下载与最近日期范围相关联的初始图像集,并在完成时显示。

  3. 当用户选择新的日期范围或滚动页面时,在集合视图中显示占位符图像切片。开始异步下载新图像并在它们到达时显示它们。
  4. 从内存中卸载上一个日期范围内的图像。 (你可以在文件系统中保留一个缓存)。
  5. 当可见区域发生变化时重复。
  6. 在iOS上,我通常使用AFNetworking(或AlamoFire for Swift)来处理异步网络请求。