捆绑资源加载变得简单
BoxCat提供了一种简单的方法来从应用捆绑包中的任何位置加载资源。它能够从主应用捆绑包以及嵌套的资源捆绑包和包含的框架(例如,包含图片、xib文件和其他类型资源的Pod)加载资源。
其主要目的是从可能包含在Pod中的资源捆绑包中加载资源。有关更多信息,请参阅Cocoapods捆绑资源。因此,为了统一的接口,它还将iOS SDK的加载资源解决方案替换掉,特别是如果您计划将来将一些资源移入Pods中。您甚至不需要更改加载资源的代码。
使用BoxCat加载资源也将启用用主捆绑包中的资源覆盖Pod中包含的资源的能力。您只需在主应用捆绑包中包含一个名为Pod或资源捆绑包中相同名称的资源,并使用BoxCat的默认接口(如UIImage.named(_:)
)加载它即可。
您可以使用Box cat的方式类似于iOS SDK内置的资源加载。但是,您不是使用资源类初始化器来加载资源,而是使用BoxCat提供的接口。
要加载图像资源,只需输入以下内容。
let boxCatImage = UIImage.named("my_image")
这将搜索整个主应用捆绑包以找到资源。因此,如果它在主应用捆绑包中,它将直接从该处加载。如果它位于主应用捆绑包内的捆绑包中,它也将找到并加载它。
BoxCat还提供了LookupFilter
来提高在主捆绑包层次结构中深度包含的资源搜索性能。向BoxCat的接口提供具体的Bundle
也是提高资源加载性能的一个选项。
您可以在全局或局部指定这些LookupFilter
,仅影响单个资源加载调用。
// Set lookup filter globally
// These lookup filter will be used for every resource loading call
let lookupFilter = lookupFilter(frameworks: ["GlobalResources"],
bundles: ["Images"])
BoxCat.lookupFilter = lookupFilter
//...
// Set specific lookup filter at the resource loading call
// Overriding the globally set lookup filter
UIImage.named("bg_launch", lookupFilter: LookupFilter(frameworks: ["GlobalResources"], bundles: ["BigImages"]))
BoxCat 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 即可:
pod "BoxCat", :git => 'https://github.com/dreyhomedev/BoxCat.git'
包含的示例演示了如何从主包加载数据,一个包含图像资源的直接包,以及从包含资源包的包中加载数据。您将注意到每个情况的调用始终相同!
您还将注意到使用了 LookupFilter
,这是 BoxCat 提供的。它们将搜索限制到应用程序包层次结构中的特定框架和(子)包。如果您包含的包中不包含资源(如 iOS 框架),这会提高资源加载的速度。
BoxCat 在 MIT 许可证下提供。有关更多信息,请参阅 LICENSE 文件。