什么是Bundle?
Bundle就是资源文件包, 将我们使用的Xib, 图片, 其他文件组织在一起! Bundle是不参与编译的, 也就是它里面没有可执行的文件, Bundle只是资源. 编译后可能存储在内存中的数据区!
怎么创建Bundle?
1. 第一步
2. 第二步
3. 其他步, 设不设置没关系
4. 第四步, 添加文件, com + B
使用创建的Bundle?
- 取这个bundle的文件
(1)图片
// 一定要确定好路径, 这个图片是在MainBundle里面的Bundle
UIImage *image = [UIImage imageNamed:@"GXBundle.bundle/QQ20180613-142252.png"];
// 返回路径
NSString *path = [[NSBundle mainBundle] pathForResource: @"GXBundle.bundle" ofTYpe: @"前面写了扩展名, 后面不写"];
NSBundle *bundle = [NSBundle bundleWithPath:path];
//加载图片又学了一个方法, 带个Bundle
UIImage *image = [UIImage imageNamed:@"QQ20180612-205946.png" inBundle:bundle compatibleWithTraitCollection:nil];
(2)Xib
//知道你的Bundle放哪里了, 直接来个路径
NSString * pathStr = [[NSBundle mainBundle] pathForResource:@"GXBundle.bundle" ofType:nil];
--这个是拼路径
NSString *mainBundlePath = [[NSBundle mainBundle] resourcePath] ;//主Bundle
NSString *pathStr = [mainBundlePath stringByAppendingPathComponent:@"GXBundle.bundle"];//拼路径, 找我的
--
//通过path(还有URL的)加载你的Bundle
NSBundle *bundle = [NSBundle bundleWithPath:path];
//掉Bundle的方法, 返回个数组, 确切的说, 这个bundle的分类方法
UIView *myView = [[bundle loadNibNamed:@"testXibView" owner:nil options:nil] lastObject];
//通过Nib
UINib *nib = [UINib nibWithNibName:@"testXibView" bundle:bundle];
UIView *myView = [[nib instantiateWithOwner:nil options:nil] lastObject];