为了资源的封装和有效利用,开发时常用自定义Bundle来储存图片和xib文件等。
自定义Bundle流程如下:
创建Bundle
注意是在 OSX 面板下。
修改设置
在Build Settings下,将Installation Directory修改为空,并将SDK修改为iOS,默认为OSX的。
添加资源
在Copy Bundle Resources面板下添加需要包含在Bundle中的资源文件。
编译生成
选择编译的对象为Generic iOS Device,进行编译,在Products目录下,可以看到生成成功的Bundle。
这里,在编译Bundle时,XCode会将同名的多个png文件合并成tiff文件,例如delete@2x.png,delete@3x.png合并成delete.tiff,并将xib文件装换成nib文件。
因此,注意不能直接通过将文件夹改后缀名为.bundle,这种情况下,xib文件不能转换成nib文件,在加载时,会报错:
1 | Terminating app due to uncaught exception |
加载自定义Bundle中的资源
获取NSBundle对象
1 | NSBundle *bundle = [NSBundle bundleWithPath:[[[NSBundle mainBundle] bundlePath] stringByAppendingString:@"/XXX.bundle"]]; |
加载图片文件
1 | [UIImage imageWithContentsOfFile:[[_bundle bundlePath] stringByAppendingFormat:@"/%@.tiff", imageName]]; |
加载nib文件
1 | [_bundle loadNibNamed:@"Name" owner:self options:nil][0] |
这里注意,如果是xib,会报上述的异常。