一实撒、加載本地圖片是否緩存
1.常見的加載本地圖片有兩種方式:
1.用
imageNamed
加載
2.用imageWithContentsOfFile
加載
2.用imageNamed
與imageWithContentsOfFile
的區(qū)別:
imageNamed
的優(yōu)點是當(dāng)加載時會緩存圖片箕宙。imageNamed
的文檔中這么說:這個方法用一個指定的名字在緩存中查找并返回一個圖片對象如果它存在的話。如果緩存中沒有找到相應(yīng)的圖片,這個方法從指定的文檔中加載然后緩存并返回這個對象尾组。
相反的粟矿,imageWithContentsOfFile
僅加載圖片。
3.用imageNamed
與imageWithContentsOfFile
的代碼:
//imageNamed當(dāng)加載時會緩存
UIImage *img = [UIImage imageNamed:@"name"];
//imageWithContentsOfFile僅加載圖片膀哲,不會緩存
UIImage *img = [UIImage imageWithContentsOfFile:@"name"];
4.使用選擇
如果你要加載一個大圖片而且是一次性使用往产,那么就沒必要緩存這個圖片,用
imageWithContentsOfFile
某宪,這樣不會浪費內(nèi)存來緩存它仿村。例如引導(dǎo)頁圖片
等。
然而兴喂,在圖片反復(fù)重用的情況下imageNamed
是一個好得多的選擇蔼囊。
二、正確的設(shè)置背景圖片
1.常見的View背景圖片設(shè)置
1.使用UIColor的 colorWithPatternImage來設(shè)置背景色
2.View添加imageview衣迷,設(shè)置imageview的背景圖片
2.使用選擇
1畏鼓、如果你使用全畫幅的背景圖,你就必須使用UIImageView蘑险。因為UIColor的colorWithPatternImage是用來創(chuàng)建小的圖片作為背景的滴肿。這種情形下使用UIImageView可以節(jié)約不少的內(nèi)存
2、如果你用小圖平鋪來創(chuàng)建背景佃迄,你就需要用UIColor的colorWithPatternImage來做了泼差,它會更快地渲染也不會花費很多內(nèi)存
3.代碼使用
//1.大圖背景贵少,view添加imageview,加載imageview背景圖
UIImageView *bgView= [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background"]];
[self.view addSubview:bgView];
//2.小圖背景堆缘,view之間用UIColor的colorWithPatternImage方法
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background"]];
三滔灶、在ImageView中調(diào)整圖片大小
如果要在
UIImageView
中顯示一個來自本地的圖片,你應(yīng)保證圖片的大小和UIImageView的大小相同吼肥。在運行中縮放圖片是很耗費資源的录平,特別是UIImageView
嵌套在UIScrollView
中的情況下。
如果圖片是從遠端服務(wù)加載的不能控制圖片大小缀皱,可以在下載完成后先縮放一次斗这,然后在UIImageView
中使用縮放后的圖片。
四啤斗、盡量把views設(shè)置為不透明
如果你有透明的Views你應(yīng)該設(shè)置它們的opaque屬性為YES表箭。原因是這會使系統(tǒng)用一個最優(yōu)的方式渲染這些views。這個簡單的屬性在XIB或者代碼里都可以設(shè)定钮莲。
Apple的文檔對于為圖片設(shè)置不透明屬性的描述是:
(opaque)這個屬性給渲染系統(tǒng)提供了一個如何處理這個view的提示免钻。如果設(shè)為YES,渲染系統(tǒng)就認(rèn)為這個view是完全不透明的崔拥,這使得渲染系統(tǒng)優(yōu)化一些渲染過程和提高性能极舔。如果設(shè)置為NO,渲染系統(tǒng)正常地和其它內(nèi)容組成這個View链瓦。默認(rèn)值是YES拆魏。
在相對比較簡單的布局中,設(shè)置這個屬性不會有太大影響慈俯。然而當(dāng)這個view嵌在scroll view里邊稽揭,或者是一個復(fù)雜動畫的一部分,不設(shè)置這個屬性的話會在很大程度上影響app的性能肥卡。