iOS Bundle的生成和使用

hi,勇敢的小伙伴儿们大家好,昨天一位朋友问我如何处理项目里的图片,是放在Assets.xcassets吗,我说是啊,

他问~

“你会打包成Bundle吗?”

“啊?我不会。”

“不会学啊,愣着干嘛?”

“噢,抽时间吧。”

于是这篇文章在这个午休期间应运而生。

以下正文:

什么是Bundle文件?

简单理解,就是资源文件包。我们将许多图片、XIB、文本文件组织在一起,打包成一个Bundle文件。方便在其他项目中引用包内的资源。

Bundle文件的特点?

Bundle是静态的,也就是说,我们包含到包中的资源文件作为一个资源包是不参加项目编译的。也就意味着,bundle包中不能包含可执行的文件。它仅仅是作为资源,被解析成为特定的2进制数据。

制作Bundle

1.新建一个工程macOS的Bundle项目

iOS Bundle的生成和使用_第1张图片

2.命名

iOS Bundle的生成和使用_第2张图片

3.删除文件夹和info.plist文件

iOS Bundle的生成和使用_第3张图片

4.删除Build Settings里的Packaging的info.plist的文件地址

iOS Bundle的生成和使用_第4张图片

5.设置Base SDK为iOS

iOS Bundle的生成和使用_第5张图片

6.添加要打包的资源文件进到文件夹

iOS Bundle的生成和使用_第6张图片

7.我添加了一张图片



8.编译,然后找到下图的按钮打开文件夹

iOS Bundle的生成和使用_第7张图片

9.找到Bundle文件,右键显示包内容,查看是否将资源文件加入其中

iOS Bundle的生成和使用_第8张图片

10.检查无误之后,将Bundle拷贝到iOS项目中

iOS Bundle的生成和使用_第9张图片

11.开始使用


这是一种方法,还有其他方法。

NSString * bundlePath = [[ NSBundle mainBundlepathForResource: @ "MyBundle"ofType :@ "bundle"];

NSBundle *resourceBundle = [NSBundle bundleWithPath:bundlePath];

UIViewController *vc = [[UIViewController allocinitWithNibName:@"vc_name"bundle:resourceBundle];

或者

UIImageView *imgView=[[UIImageView alloc] initWithFrame:CGRectMake(50, 50, 50,50)];

NSString *imgPath= [bundlePath stringByAppendingPathComponent:@"img_collect_success.png"];

UIImage *image_1=[UIImage imageWithContentsOfFile:imgPath];

[imgView setImage:image_1];


或者预编译

#define MYBUNDLE_NAME @ "MyBundle.bundle"

#define MYBUNDLE_PATH [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: MYBUNDLE_NAME]

#define MYBUNDLE [NSBundle bundleWithPath: MYBUNDLE_PATH]


你可能感兴趣的:(iOS)