我可以将文件放入Assets.xcassets
中,也可以将文件放入文件夹引用(蓝色文件夹)中。什么情况下我会选择其中之一呢?
应用程序瘦身
设置属性而无需代码,例如渲染模式或切片
您不必记住命名约定,例如@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。这只是一个例子。
4) 更容易管理自动布局的资源。如果您的资源有1x,2x,3x和ipad图像大小!= iphone图像大小
,您可以将6个文件添加到1个资产项中。
您可以在此处阅读更多信息 http://krakendev.io/blog/4-xcode-asset-catalog-secrets-you-need-to-know