项目中一些代码是一framework或.a等SDK形式集成进来的,而SDK中使用到了资源文件,这时候需要把这些资源文件包括图片、xib、storyboard等打包到一个bundle中。
踩坑过程不细说了,bundle本身是一个文件夹,直接拖入到Xcode项目中,是不会自动编译里面的资源文件的。需要新建一个bundle target,同时要正确配置bundle的引入,否则bundle编译时可能不会被复制到app这个包中,导致项目中的代码获取不到。
新建一个 macOS 的 bundle target,将
Base SDK
由last macOS
改为last iOS
将需要用到的资源文件包括png、xib、storyboard等复制到这个target文件夹下,并确认
build phases
下的compy bundle resource
有正确引入这些文件-
在 bundle target 中
Build Phases
下的COMBINE_HIDPI_IMAGES
设置为NO防止png格式被编译为tiff
在 app target 中的
embedded binaries
中引入新建的bundele,在build phases
选项卡的copy Files
将Destination改为Resource。
// 获取图片
[UIImage imageNamed:[NSString stringWithFormat:@"Resources.bundle/%@",imageName]];
// 获取 storyboard
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
NSString *bundlePath = [bundle pathForResource:@"Resources" ofType:@"bundle"];
if (bundlePath) {
bundle = [NSBundle bundleWithPath:bundlePath];
}
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"HLImagePicker" bundle:bundle];