1 添加资源Bundle Target
资源必须是单独编译成Bundle才能使用,所以需要为MyLibrary(静态库target)项目生成另一个Bundle Target
选择MyLibrary(静态库target)项目,在右边面板中点Add Target->MAC OS X->FRAMEWORK &LIBRARY->Bundle
2 修改资源bundle target
把bundle target修改成ios能用的,看图
Build Settings设置
1)Architectures为Standard (armv7)
2)Build Active Architecture Only 为指定的IOS版本
3 添加 XIB的输出
设置XIB为输出到BUNDLE,这一步相当于VS c#开发里把某个图片设置编译动作为嵌入资源.
选择Mylibrary(静态库target)项目,targets选择MyLibraryResources(静态库资源target),Build Phases面板
Copy Bundle Resources点+选择xib文件
4 关联静态库引用
把主程序和静态库做关联,这样省得每次要手动添加静态库的.a文件
要说明下:我原本以为编译主程序会自动编译静态库,实际上做的并没有那么好,我改动了静态库的XIB内容,但编译主程序后发现内容还是上次的,所以我每次都是clean build.
编辑Scheme(菜单Product->Edit Scheme)
选择Build
点+,选择MyLibrary(静态库target)和MylibraryResources(静态库资源target)项目
这样的话,每次build都可以编译多个target和scheme。
5 最后设置主程序项目
选择MyLibraryResource(静态库资源target)项目在Build Settings面板里
设置User Header Search Paths为$(BUILT_PRODUCTS_DIR),注意建议把Recursive勾上(递归搜索)
6 使用
- (id)init
{
NSBundle *bundle = [NSBundle bundleWithURL:[[NSBundlemainBundle] URLForResource:ResourcesBundlewithExtension:@"bundle"]];
if ((self = [super initWithNibName:[NSStringstringWithUTF8String:object_getClassName(self)] bundle:bundle]))
{
//code
}
return self;
}
注意: 在bundle中引用图片时,如果有图片的文 件名中有@2 ,在代码也需要加。
例子如下:app_flash@2x.jpg是bundle中的图片
NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"WpaiResource" ofType:@"bundle"]];
NSString *imagePath = [bundle pathForResource:@"app_flash@2x" ofType:@"jpg"];
UIImage *img = [UIImage imageWithContentsOfFile:imagePath];