在我們使用第三方框架時(shí),常??吹絏XX.bundle的文件。
我們找到該文件,顯示包內(nèi)容,大致看到很多資源文件:圖片、配置文本、XIB文件……
什么是Bundle文件?
簡(jiǎn)單理解,就是資源文件包。我們將許多圖片、XIB、文本文件組織在一起,打包成一個(gè)Bundle文件。方便在其他項(xiàng)目中引用包內(nèi)的資源。
Bundle文件的特點(diǎn)?
Bundle是靜態(tài)的,也就是說(shuō),我們包含到包中的資源文件作為一個(gè)資源包是不參加項(xiàng)目編譯的。也就意味著,bundle包中不能包含可執(zhí)行的文件。它僅僅是作為資源,被解析成為特定的2進(jìn)制數(shù)據(jù)。
制作Bundle
1.新建bundle項(xiàng)目
2.添加需要的圖片
加入你需要編譯在bundle中的資源文件。
當(dāng)然,默認(rèn)的配置也是可以的,如果你需要特定的優(yōu)化或者特定的路徑配置,你可以進(jìn)行下面第3步的配置。
3.你可以對(duì)編譯的bundle進(jìn)行一些可選的設(shè)置(可選)
a.作為資源包,僅僅需要編譯就好,無(wú)需安裝相關(guān)的配置。
b.同樣要?jiǎng)h除安裝路徑。
c.該資源包的pch文件和strings文件是可以刪除的。
4.最好狀態(tài)下,要編譯出適用與iPhone的bundle文件。
項(xiàng)目集成bundle
使用bundle就非常的easy了,將編譯好的XXXX.bundle 文件直接加入到需要的項(xiàng)目中。省略了!
使用bundle中的資源
將要使用的bundle集成到項(xiàng)目中后,就可以使用了。需要注意的就是,bundle是靜態(tài)的,不進(jìn)行編譯的資源文件。所以,要使用bundle中的資源,就需要找到相應(yīng)的資源路徑。
這里廢話就不多說(shuō)了,貼代碼!
VC獲得bundle中的資源
NSString* bundlePath = [[NSBundlemainBundle]pathForResource: @"MyBundle"ofType:@"bundle"];
NSBundle*resourceBundle =[NSBundlebundleWithPath:bundlePath];
UIViewController*vc =[[UIViewControlleralloc]initWithNibName:@"vc_name"bundle:resourceBundle];
圖片獲得bundle中的資源
UIImageView*imgView=[[UIImageViewalloc]initWithFrame:CGRectMake(50,50,50,50)];
UIImage*image = [UIImage
imageNamed:@"MyBundle.bundle/img_collect_success"];
[imgViewsetImage:image];
或者
UIImageView*imgView=[[UIImageViewalloc]initWithFrame:CGRectMake(50,50,50,50)];
NSString*imgPath= [bundlePathstringByAppendingPathComponent:@"img_collect_success.png"];
UIImage*image_1=[UIImageimageWithContentsOfFile:imgPath];
[imgViewsetImage:image_1];
當(dāng)然,可以寫(xiě)成預(yù)編譯語(yǔ)句:
#define MYBUNDLE_NAME @"MyBundle.bundle"
#define MYBUNDLE_PATH [[[NSBundle mainBundle] resourcePath]stringByAppendingPathComponent: MYBUNDLE_NAME]
#define MYBUNDLE [NSBundle bundleWithPath: MYBUNDLE_PATH]
希望對(duì)你有所幫助!