管理图像层次结构的最佳方式是什么?

What's the best way to manage an image hierarchy?

我们正在构建一个列出约 1000 条记录的应用程序(ios 和 Android)。此列表显示在 tableview/listview 中,其中包含与视图中显示的每条记录相关的图像。选择记录后,详细视图将打开并显示与该记录相关的多个图像。 在两个平台中组织和访问这些图像资产的最佳(和最简单)方法是什么?

更多信息: 还有几行与每个详细屏幕相关的文本。这也是需要处理的。 图片应该与应用程序打包,因为该应用程序将经常离线使用。

对于iOS :: 选择一次显示的集合视图可能是最简单的。

1000 多张图片?这是相当大的,会让你的 ipa 为商店膨胀,它也会让你不得不添加所有图像。您真的应该将它们放在服务器上并在需要时下载它们,或者在第一次加载时下载所有内容。

我会为 tableview 提供缩略图或其他内容,然后在选择时将相关图像下载到应用程序包的目录中。该临时目录可以作为您的来源。只需创建一个包装器来读取目录并为找到的每个图像(图像和文本描述,如果可用)创建 ImageObject,然后编译成一个字典,其中的键是标识每条记录的任何内容。

在编译与记录关联的所有图像时,包装器是一个重要的层,因为只要您维护使用字典来组织数据的接口契约,就可以根据需要交换实现。

tableview 显示所有记录并在需要时下载缩略图(这是非常标准的)。选择记录然后转到一个集合视图,该视图向包装​​器询问记录 images/descriptions。包装器从系统或服务器中获取 和 returns 字典。然后collection view使用字典作为数据源显示所有带有图片描述的图片

无论如何,根据您模糊的规格,我就是这样做的。

首先,绝对不建议将它们存储在Core Data中。 Core Data 性能低,不能跨平台。我没有看到将图像存储到 Core Data 中有任何好处,并且您需要在显示时对其进行序列化。

我建议您将记录存储在 SQLite 数据库中。 SQLite 是一个高性能、跨平台的嵌入式数据库,两个平台都完全支持它。

创建SQLite 3数据库,存储所有记录,但图片有两种情况:

  1. 图片很小,比如按钮的图标,图片数量较少,可以直接存入数据库。
  2. 图片大,数量多,那么应该存入系统,只把图片的名字或者路径存入数据库。

我建议将图像存储在系统中,因为无法查询和索引blob数据。当你需要对图像做一些事情时就比较麻烦了。从系统读取会比从数据库读取更快。

图像在打包前应进行压缩。如果图片较大,创建相应的缩略图将提高UI流畅度。

然后您只需要将数据库和图像(如果未存储在数据库中)复制到您的应用程序中。以后数据发生变化时,您只需要为您的应用更换数据库即可。