我可以将文件放入Assets.xcassets
,也可以将文件放入文件夹引用(蓝色文件夹)。我何时会选择一个而不是另一个?
答案 0 :(得分:6)
您应该使用资产目录,因为这是Apple希望您继续使用的资产目录(工具将反映出来)并且它们带来许多优势:
App thinning
设置无代码的资产属性,例如渲染模式或切片
您不必记住@2x
,~ipad
,-568
等命名惯例,以自动获取特定于设备的资源
如果您勾选所支持的版本和设备的右侧框,资产目录将指出缺少的资产,并且它们提供了一个很好的概述
您应该习惯他们,因为某些平台(例如,watchOS)要求您使用资产目录
有几点需要注意:
如果您部署回iOS 6,某些功能don't work as expected - 资产目录仍然有助于组织您的资产,但运行时功能将无法正常工作,因为Xcode只会将普通图像文件转储到您的捆绑包中
如果您部署到iOS 7或更高版本,Xcode会将所有资产编译成一个.car
文件(这就是整个想法)。但是,这可能更难调试,因为您无法查看已编译的文件,这也意味着您不能简单地从单个资产获取文件URL。要创建文件URL,您始终必须加载资产(按名称)并首先将其写入磁盘。 *
最后一点还暗示您无法使用NSBundle
(在Swift 3.0:Bundle
)API中检索图像文件的URL或路径。为了从主捆绑以外的捆绑中加载资产,您依靠Apple提供API which they do since iOS 8.0。如果您在资源包中组织共享代码并部署到iOS 7或更早版本,则不应使用资产目录。如果您打算开发一个框架,这可能是最重要的。
*
例如,CoreSpotlight API允许您设置thumbnailURL
,但如果您的图像位于资产目录中,则必须自己单独将其写入磁盘,或使用{{3属性。如果您有一个文件URL,那么您永远不必将资产加载到内存中。我不确定Spotlight是否可以从您的应用包中访问文件网址。这只是一个例子。
答案 1 :(得分:1)
您应该使用资产。文件夹引用可以做的许多好处
1)在没有任何代码的情况下改变图像的颜色
2)支持向量,pdf更好。
3)支持Slicing image
。
4)更轻松地管理资源以进行自动布局。如果您的资源有1x,2x,3x和ipad image size != iphone image size
,则可以将6个文件添加到1个资产项目中。
您可以在这里阅读更多内容 http://krakendev.io/blog/4-xcode-asset-catalog-secrets-you-need-to-know