简而言之 :
如何Assets.car
从NSBundle
.
完整版本:
我正在将一套应用程序转换为使用CocoaPods
. 每个应用程序都依赖于一个名为Core
.
Core
包括代码文件、xib
文件和几个xcasset
文件。
这是创建资源包的Podspec
for的相关行:Core
s.resource_bundles = {'CoreResources' => ['Core/Resources/*']}
正确构建了Podspec
passpod spec lint
和依赖它的 main 项目。
但是,其中任何xcasset
文件的图像Core
都没有显示。
我(天真地)尝试使用这样的类别加载图像UIImage
:
@implementation UIImage (Bundle)
+ (UIImage *)imageNamed:(NSString *)name bundle:(NSBundle *)bundle
{
if (!bundle)
return [UIImage imageNamed:name];
UIImage *image = [UIImage imageNamed:[self imageName:name forBundle:bundle]];
return image;
}
+ (NSString *)imageName:(NSString *)name forBundle:(NSBundle *)bundle
{
NSString *bundleName = [[bundle bundlePath] lastPathComponent];
name = [bundleName stringByAppendingPathComponent:name];
return name;
}
@end
以前,Core
是 a submodule
,并且此解决方案运行良好。但是,在检查我以前的bundle
文件(与捆绑包分开main
)后,我注意到所有图像都被简单地复制到bundle
......即
Image.png
, Image@2x.png
, 等都在捆绑包中。
检查生成的CocoaPods
包后,它包含一个
Assets.car
我理解它是所述子目录中所有xcasset
文件的组合编译版本。Core
如何从这个资源包中编译Assets.car
的这个加载图像?Core
作为一个黑客,我想我可以......
Podspec语法参考以此为例:
spec.resource = "Resources/HockeySDK.bundle"
这似乎表明可以在 Xcode中手动创建包并让 CocoaPods 简单地复制它。
不过,这更像是一种技巧,而不是一种解决方案。
我相信 CocoaPods (v 0.29+) 可以完全处理这个......?