IOS多個(gè)UIImageView加載高清大圖時(shí)內(nèi)存管理-創(chuàng)新互聯(lián)

IOS 多個(gè)UIImageView 加載高清大圖時(shí)內(nèi)存管理

創(chuàng)新互聯(lián)公司一直通過網(wǎng)站建設(shè)和網(wǎng)站營(yíng)銷幫助企業(yè)獲得更多客戶資源。 以"深度挖掘,量身打造,注重實(shí)效"的一站式服務(wù),以成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、移動(dòng)互聯(lián)產(chǎn)品、全網(wǎng)營(yíng)銷推廣服務(wù)為核心業(yè)務(wù)。10年網(wǎng)站制作的經(jīng)驗(yàn),使用新網(wǎng)站建設(shè)技術(shù),全新開發(fā)出的標(biāo)準(zhǔn)網(wǎng)站,不但價(jià)格便宜而且實(shí)用、靈活,特別適合中小公司網(wǎng)站制作。網(wǎng)站管理系統(tǒng)簡(jiǎn)單易用,維護(hù)方便,您可以完全操作網(wǎng)站資料,是中小公司快速網(wǎng)站建設(shè)的選擇。

 當(dāng)我們?cè)谀骋粋€(gè)View  多個(gè)UIImageView,且UIImageView都顯示的是高清大圖,就有可能出現(xiàn)內(nèi)存警告的問題。如果第一次進(jìn)入這個(gè)view,沒有發(fā)生內(nèi)存警告,當(dāng)再次進(jìn)入這個(gè)view,如果上一次的內(nèi)存沒有及時(shí)釋放,這一次次的累加,便可導(dǎo)致內(nèi)存崩潰。

1,UIImage 加載圖片的方式。

   如果是本地圖片,盡量不要使用 [UIImage  p_w_picpathNamed:nil]; 這種方式,如果使用這種方式加載,只要程序不退出,它便一直會(huì)在內(nèi)存中。

   我們可以使用 :

              NSString *path = [[NSBundlemainBundle]pathForResource:@'"圖片的名字" ofType:@""];

             UIImage *p_w_picpath = [UIImagep_w_picpathWithContentsOfFile:path];

  那兩者的優(yōu)缺點(diǎn)就很明顯了,[UIImage  p_w_picpathNamed:nil]; 只需加載一次,它便在內(nèi)存中,所以第二次加載速度很快。而第二種加載方式由于我們將它釋放掉了,會(huì)再次加載。所以選用那種方式,依你情況而定。

2,上面說(shuō)的第二種方式,雖然可以釋放掉,但我們要告訴人家什么時(shí)候釋放。也就是說(shuō),當(dāng)前顯示頁(yè)面不是這個(gè)view時(shí),我們便將它釋放掉:

- (void)viewWillDisappear:(BOOL)animated{

  [UIImageView removeFromSuperview];

  UiImageView = nil;

}

當(dāng)然,當(dāng)我們?cè)俅芜M(jìn)入這個(gè)view時(shí),便要將移除掉的view再次添加進(jìn)來(lái)

- (void)viewDidAppear:(BOOL)animated{

  [self addSubView:UIImageView];

}

3,上述兩種方式,主要解決內(nèi)存累加的問題。但如果第一次進(jìn)入view,圖片全部渲染在view上時(shí),內(nèi)存就崩潰了。那我們只能在圖片上做文章了。我們加載的高清大圖如果差不多都是3000*2000,也可能比這個(gè)還大,就算我們的程序是iPad App,iPad 4  的分辨率才多少,這些圖遠(yuǎn)遠(yuǎn)大于設(shè)備的分辨率,完全是資源浪費(fèi),所以我們通常的一個(gè)做法,便是將這樣的圖以小尺寸渲染到view上。

推薦使用:

  • UIImage+Resize.h, UIImage+Resize.m

  • Extends the UIImage class to support resizing (optionally preserving the original aspect ratio), cropping, and generating thumbnails.

  • UIImage+RoundedCorner.h, UIImage+RoundedCorner.m

  • Extends the UIImage class to support adding rounded corners to an p_w_picpath.

  • UIImage+Alpha.h, UIImage+Alpha.m

  • Extends the UIImage class with helper methods for working with alpha layers (transparencies).

常用方法:

 UIImage *p_w_picpath

 UIImage *thumbImage = [p_w_picpaththumbnailImage:140// This should the size of the view in collection view. example: myCell width is 20 and height is 20.

                    transparentBorder:0

                      cornerRadius:0

                   interpolationQuality:kCGInterpolationMedium];    //生成縮略圖

      // this "resizedp_w_picpath" p_w_picpath is what you want to pass to setImage

       UIImage * resizedImage = [p_w_picpathresizedImage:p_w_picpathview.frame.sizeinterpolationQuality:kCGInterpolationLow];  //生成你想要尺寸的圖

  造成的問題,要注意縮放的比例,不要導(dǎo)致圖片變形,由于尺寸縮小,可能會(huì)導(dǎo)致圖片模糊,注意縮小的尺寸。

  綜上可見,每種方法有優(yōu)點(diǎn),有缺點(diǎn)。主要依據(jù)自己的開發(fā)情況,折中使用。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站名稱:IOS多個(gè)UIImageView加載高清大圖時(shí)內(nèi)存管理-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://bm7419.com/article48/dpccep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管云服務(wù)器、網(wǎng)站建設(shè)小程序開發(fā)、搜索引擎優(yōu)化、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化