使用Bundle存儲(chǔ)獲取圖片

一、制作bundle文件

1.創(chuàng)建一個(gè)文件夾,把要用的圖片放入文件夾,并命名為*.bundle

2.把.bundle文件拖入工程中

二、使用圖片

初始化一個(gè)ImageView

UIImageView *myImage=[[UIImageView alloc]initWithFrame:CGRectMake(50, 400, 100, 100)];

[self.view addSubview:myImage];

獲取圖片

NSString *bundlePath = [[NSBundle mainBundle].resourcePath stringByAppendingPathComponent:@"Picture.bundle"];

NSBundle *bundle = [NSBundle bundleWithPath:bundlePath];

UIImage *(^getBundleImage)(NSString *) = ^( NSString *nm) {

return [UIImage imageWithContentsOfFile:[ bundle pathForResource:nm ofType:@"jpg"]];

};

myImage.image = getBundleImage(@"555");

獲取@2x或@3x圖片

myImage.image = getBundleImage(@"555@2x");

myImage.image = getBundleImage(@"555@3x");

注意:當(dāng)同時(shí)存儲(chǔ)555 和@2x @3x圖片時(shí),如果不寫@2x或@3x會(huì)默認(rèn)選擇@3x的圖片賦值給myImageview。

三、為方便使用,把寫如下方法在新類中,使用時(shí)調(diào)用此類。

ImagePic.m文件中方法

+(UIImage *)imagesNamedFromCustomBundle:(NSString *)imgName

{

NSString *bundlePath = [[NSBundle mainBundle].resourcePath stringByAppendingPathComponent:@"Picture.bundle"];

NSBundle *bundle = [NSBundle bundleWithPath:bundlePath];

NSString *img_path = [bundle pathForResource: imgName ofType:@"jpg"];

return [UIImage imageWithContentsOfFile:img_path];

}

調(diào)用

myImage.image = [ImagePic imagesNamedFromCustomBundle: @"555"];


簡(jiǎn)單理解,Bundle文件就是資源文件包。我們將許多圖片、XIB、文本文件組織在一起,打包成一個(gè)Bundle文件。方便在其他項(xiàng)目中引用包內(nèi)的資源。

Bundle是靜態(tài)的,也就是說(shuō),我們包含到包中的資源文件作為一個(gè)資源包是不參加項(xiàng)目編譯的。也就意味著,bundle包中不能包含可執(zhí)行的文件。它僅僅是作為資源,被解析成為特定的2進(jìn)制數(shù)據(jù)。

引用自:http://blog.sina.com.cn/s/blog_7b9d64af0101jmj2.html

imageName的方式會(huì)在使用的時(shí)候系統(tǒng)會(huì)cache,程序員是無(wú)法處理cache的,這是由系統(tǒng)自動(dòng)處理的,對(duì)于重復(fù)加載的圖像,速度會(huì)提升很多,這樣反而用戶體驗(yàn)好。所以如果某張圖片需要在應(yīng)用中使用多次,或者重復(fù)引用,使用imageName的方式會(huì)更好

imageWithContentsOfFile的方式,在使用完成之后系統(tǒng)會(huì)釋放,不會(huì)緩存下來(lái),所以也就沒(méi)有這樣的問(wèn)題。一般也不會(huì)把所有的圖片都會(huì)緩存。有些圖片在應(yīng)用中只使用一兩次的,就可以用這樣的方式,比如新手引導(dǎo)界面的圖片等等,就適合這樣的方式。沒(méi)有明顯的界限。

引用自:http://www.cnblogs.com/easonoutlook/archive/2012/12/17/2821648.html?

所以,當(dāng)使用的圖片不是經(jīng)常使用的,可以放到bundle文件中,經(jīng)常用的圖片用[UIImage imageNamed:@"55"];這種方式獲取比較好。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容