使用 Asset Catalog 特权从 URL 下载图像

Downloading an image from URL with Asset Catalog perks

我是 iOS 开发的新手,正在开发我的第一个正式应用程序 (Objective C)。

我正在使用外部 API 并且已经到了需要从所述 API 下载图像以作为缓存保持离线状态的地步。

现在,如果我理解正确的话,我可以使用资产目录将图像添加到我在 XCode 上的应用程序中。例如,如果我添加了 image@1X.png、image@2X.png 和 image@3X.png 版本的图像,为了以后使用它们,我只需要提供“图像”部分到 iOS,它将自动 return 适合当前使用的设备的版本。

但是我无法在运行时将图像添加到资产目录 - 我必须从图像创建一个 NSData URL 并将其保存到 Documents 文件夹。

问题是,这个 API 为我提供了一堆 URL 用于我需要下载的不同版本的图像,其中包括 @2X、@3X 等版本图片,所以我需要下载所有版本并使用资产目录功能为设备检索合适的版本。

我怎样才能做到这一点?

非常感谢您的帮助,如果我有什么不对的地方,请指正。

如果对您的要求有帮助,您可以查看 UIImageAsset 上的文档

此外,正如您所说,您是 iOS 开发的新手,您还可以查看文件系统文档,这有助于您更好地理解和管理文件 File System basics

编辑:如 sateesh 和 patchdiaz 所述,为特定设备下载单一分辨率图像而不是为设备下载所有分辨率图像将是更好的解决方案

so I need to download all versions and use the asset catalog feature of retrieving the appropriate one for the device.

你不需要。我们将 2x 和 3x 图像添加到我们的资产目录中,因为我们不知道我们的应用程序在什么设备上 运行。但在你的情况下,你需要在运行时知道这一点,所以你已经知道什么是设备。

要获取设备的比例因子,您可以执行以下操作:

UIScreen.mainScreen().scale

因此,对于 2x 这将是 return 2,对于 3x 这将是 return 3.

由此,您可以知道需要从 API 下载的正确图像是什么,而不是全部下载,这会增加不必要的开销。