【问题标题】:Downloading an image from URL with Asset Catalog perks使用资产目录特权从 URL 下载图像
【发布时间】:2016-02-21 12:31:33
【问题描述】:

我是 iOS 开发的新手,正在开发我的第一个严肃的应用程序(目标 C)。

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

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

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

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

我怎样才能做到这一点?

非常感谢您的帮助,如果我有错误,请纠正我。

【问题讨论】:

  • 其实你不需要下载所有分辨率的图片。以编程方式下载适合手机用户使用的图像。将其保存在具有相同图像名称的文档文件夹中(没有@2x和@3x)。

标签: ios objective-c xcode assets catalog


【解决方案1】:

所以我需要下载所有版本并使用资产目录功能来检索适合设备的版本。

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

要获得设备的比例因子,您可以:

UIScreen.mainScreen().scale

因此,对于 2x,这将返回 2,对于 3x,它将返回 3。

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

【讨论】:

    【解决方案2】:

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

    正如您所说,您是 iOS 开发的新手,您可以检查文件系统文档,这也有助于您以更好的方式理解和管理文件 File System basics

    编辑:正如 sateesh 和 patchdiaz 所提到的,为特定设备仅下载单个分辨率图像而不是下载设备的所有分辨率图像会是更好的解决方案

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-23
      • 2014-09-29
      • 1970-01-01
      • 2019-05-09
      • 1970-01-01
      • 2014-08-18
      • 1970-01-01
      相关资源
      最近更新 更多