Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用资产目录特惠从URL下载图像_Ios_Objective C_Xcode_Assets_Catalog - Fatal编程技术网

Ios 使用资产目录特惠从URL下载图像

Ios 使用资产目录特惠从URL下载图像,ios,objective-c,xcode,assets,catalog,Ios,Objective C,Xcode,Assets,Catalog,我是iOS开发的新手,正在开发我的第一款严肃应用程序(Objective C) 我正在使用一个外部API,我需要从该API下载一个映像,以保持脱机缓存 现在,如果我理解正确,我可以使用资产目录在XCode上将图像添加到我的应用程序中。例如,如果我添加一个带有image@1X.png, image@2X.png及image@3X.png版本,为了以后使用它们,我只需要向iOS提供“映像”部分,它将自动返回适合当前使用的设备的版本 但是,我无法在运行时将图像添加到资产目录-我必须从图像URL创建NS

我是iOS开发的新手,正在开发我的第一款严肃应用程序(Objective C)

我正在使用一个外部API,我需要从该API下载一个映像,以保持脱机缓存

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

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

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

我怎样才能做到这一点


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

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

另外,正如您所说,您对iOS开发比较新,您还可以查看文件系统文档,这有助于您更好地理解和管理文件


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

如果有帮助,您可以在上查看文档

另外,正如您所说,您对iOS开发比较新,您还可以查看文件系统文档,这有助于您更好地理解和管理文件

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

因此,我需要下载所有版本,并使用资产目录功能为设备检索适当的版本

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

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

UIScreen.mainScreen().scale
因此,对于2x,它将返回2,对于3x,它将返回3

由此,您可以知道需要从API下载的正确映像是什么,而不是下载所有这些映像,这将增加不必要的开销

因此,我需要下载所有版本,并使用资产目录功能为设备检索适当的版本

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

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

UIScreen.mainScreen().scale
因此,对于2x,它将返回2,对于3x,它将返回3


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

实际上,您不需要下载所有分辨率的图像。通过编程下载手机用户使用的正确图像。用相同的图像名称保存在记录片文件夹中(没有@2x和@3x)。实际上你不需要下载所有分辨率的图像。通过编程下载手机用户使用的正确图像。使用相同的图像名称将其保存在记录片文件夹中(没有@2x和@3x)。谢谢,这正是我所需要的,它可以节省设备上的空间。谢谢,这正是我所需要的,它可以节省设备上的空间。