Bundle文件可以理解为一个资源包,用于存储图片、音频、文本、nib文件等,方便在其他项目中引用包内的资源。bundle包是静态的,不参与编译,也就意味着,bundle 包中不能包含可执行的文件。它仅仅是作为资源,被解析成为特定的 2 进制数据。
一、创建方式
1、简单创建:创建一个文件, 将该文件重命名成后缀为.bundle的文件
2、通过X-Code创建
新建一个工程:
屏幕快照 2018-06-06 下午6.26.44.png
屏幕快照 2018-06-06 下午6.28.35.png
屏幕快照 2018-06-06 下午6.33.30.png
屏幕快照 2018-06-06 下午6.35.39.png
添加资源到工程:
屏幕快照 2018-06-07 上午9.36.34.png
此时可以看到.bundle文件是红色的,接下来分别选一个模拟器和Generic iOS Device编译一下,分别代表真机和模拟器
屏幕快照 2018-06-07 上午9.38.55.png
运行过后.bundle文件变成了黑色,选中该文件show in Finder
屏幕快照 2018-06-07 上午9.42.32.png
里面有相对应的真机和模拟器的生成的.bundle文件
屏幕快照 2018-06-07 上午9.43.06.png
Bundle文件的使用:
直接在这个工程中,创建一个App项目。然后把这个Bundle资源包添加(直接拖也OK)进去调用即可
屏幕快照 2018-06-07 上午10.57.30.png
屏幕快照 2018-06-07 上午11.01.17.png
屏幕快照 2018-06-07 上午11.03.09.png
//如果不像上面这样,直接新建一个工程将bundle包直接拖到新工程中使用也是OK的
具体访问文件方法:(以图片为例)
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 100, 100)];
//获取bundle路径的两种方式
NSString *path = [[NSBundle mainBundle] pathForResource:@"MyDemo" ofType:@"bundle"];
// NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"MyDemo"];
NSBundle *bundle = [NSBundle bundleWithPath:path];
//获取image的两种方式
imageView.image = [UIImage imageNamed:@"emojy" inBundle:bundle compatibleWithTraitCollection:nil];
// imageView.image = [UIImage imageNamed:@"MyDemo.bundle/emojy"];
[self.view addSubview:imageView];
如果有nib文件:
NSString *path = [[NSBundle mainBundle] pathForResource:@"MyDemo" ofType:@"bundle"];
// NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"MyDemo"];
NSBundle *bundle = [NSBundle bundleWithPath:path];
UINib *nib = [UINib nibWithNibName:NSStringFromClass([@"YourClassName" class]) bundle:bundle];
网友评论