资产目录与文件夹参考:何时使用其中之一?

2024-04-12

我可以将文件放入Assets.xcassets或者我可以将文件放入文件夹引用(蓝色文件夹)中。我什么时候会选择其中之一而不是另一个?


您可能应该使用资产目录,因为这就是 Apple 希望您今后使用的内容(工具将反映这一点),并且它们带来了许多优势:

  • 应用程序细化

  • 无需代码即可设置资源属性,例如渲染模式或切片

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

  • 如果您在支持的版本和设备上勾选正确的框,资产目录将指出缺失的资产,并且它们提供了一个很好的概述

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

有一些注意事项:

  • 如果您部署回 iOS 6,某些功能没有按预期工作 https://stackoverflow.com/questions/18900967/asset-catalogs-in-resource-bundles/28568073#28568073– 资产目录仍然有助于组织您的资产,但运行时功能将不起作用,因为 Xcode 只会将纯图像文件转储到您的包中。

  • 如果您部署到 iOS 7 或更高版本,Xcode 会将所有资源编译为一个.car文件(这就是整个想法)。但是,这可能更难调试,因为您无法查看已编译的文件,并且这也意味着您无法简单地从单个资产获取文件 URL。要创建文件 URL,您始终必须先加载资源(按其名称)并将其写入磁盘。*

  • 最后一点还意味着您不能使用NSBundle(在 Swift 3.0 中:Bundle) 用于检索图像文件的 URL 或路径的 API。为了从主包以外的包加载资源,您需要依赖 Apple 提供的 API,从 iOS 8.0 开始他们就这么做了 https://stackoverflow.com/a/30312469/2050985。如果您在资源包中组织共享代码并部署到 iOS 7 或更早版本,则不应使用资产目录。如果您打算开发一个框架,这可能是最相关的。

*例如,CoreSpotlight API 允许您设置thumbnailURL https://developer.apple.com/library/ios/documentation/CoreSpotlight/Reference/CSSearchableItemAttributeSet_Class/index.html#//apple_ref/occ/instp/CSSearchableItemAttributeSet/thumbnailURL,但是如果您的图像位于资产目录中,您必须自己将其单独写入磁盘,或者使用thumbnailData https://developer.apple.com/library/ios/documentation/CoreSpotlight/Reference/CSSearchableItemAttributeSet_Class/index.html#//apple_ref/occ/instp/CSSearchableItemAttributeSet/thumbnailData财产。如果您一开始就拥有文件 URL,则无需将资源加载到内存中。我不确定 Spotlight 是否可以从您的应用程序包中访问文件 URL。这只是一个例子。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

资产目录与文件夹参考:何时使用其中之一? 的相关文章

随机推荐