资源目录与文件夹引用:何时使用哪个?

9

我可以将文件放入Assets.xcassets中,也可以将文件放入文件夹引用(蓝色文件夹)中。什么情况下我会选择其中之一呢?


1
当然应该使用资源文件,因为自iOS 9以来,App切片已经被引入,允许您向不同的设备提供特定尺寸的资源文件,从而减小应用程序大小和下载带宽。 - Shubhank
2个回答

7
你应该使用资源目录,因为这是苹果未来希望你使用的工具(工具将反映这一点),而且它们带来了许多优势:
  • 应用程序瘦身

  • 设置属性而无需代码,例如渲染模式或切片

  • 您不必记住命名约定,例如@2x~ipad-568等,以自动获取特定设备的资源

  • 如果您为支持的版本和设备选择了正确的框,则资源目录将指出缺少的资源,并提供良好的概述

  • 你应该习惯使用它们,因为一些平台(例如watchOS)要求你使用资源目录

但也有一些注意事项:

如果你部署到iOS 6,则某些功能无法按预期工作-资产目录仍有助于组织资产,但运行时功能将不起作用,因为Xcode只会将普通图像文件转储到您的捆绑包中。如果您部署到iOS 7或更高版本,则Xcode将所有资产编译为一个.car文件(这就是整个想法)。然而,这可能更难调试,因为您无法查看已编译的文件,这也意味着您不能仅从单个资产获取文件URL。要创建文件URL,您必须始终首先通过名称加载资产并将其写入磁盘。*最后一点还意味着您无法使用NSBundle(在Swift 3.0中:Bundle)API检索指向图像文件的URL或路径。为了从主要捆绑包以外的捆绑包中加载资产,您依赖于苹果提供API,自iOS 8.0以来他们确实提供了。如果您将共享代码组织在资源束中并部署到iOS 7或更早版本,则不应使用资产目录。这可能主要与开发框架有关。

* 例如,CoreSpotlight API 允许您设置 thumbnailURL,但如果您的图像位于资源目录中,则必须自己将其单独写入磁盘,或使用 thumbnailData 属性。如果一开始就有文件 URL,您永远不必将资源加载到内存中。我不确定 Spotlight 是否可以从应用程序包内访问文件 URL。这只是一个例子。


关于图像的本地化怎么样? 我看到文件夹中存储的.png文件有“本地化...”按钮,但是对于添加到.xcassets中的图像,没有这样的按钮。 希望我只是不知道该去哪里找它。 - Nick Entin

1
你应该使用资源文件。与文件夹引用相比,有许多好处。
1)可以在不编写任何代码的情况下更改图像颜色。
2)更好地支持矢量图和pdf。
3)支持切片图像。

enter image description here

4) 更容易管理自动布局的资源。如果您的资源有1x,2x,3x和ipad图像大小!= iphone图像大小,您可以将6个文件添加到1个资产项中。

您可以在此处阅读更多信息 http://krakendev.io/blog/4-xcode-asset-catalog-secrets-you-need-to-know


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接