IOS开发笔记 - 基于SDWebImage的网络图片加载处理
前言:
在IOS下通過URL讀一張網(wǎng)絡(luò)圖片并不像Asp.net那樣可以直接把圖片路徑放到圖片路徑的位置就ok,
而是需要我們通過一段類似流的方式去加載網(wǎng)絡(luò)圖片,接著才能把圖片放入圖片路徑顯示。
這里找了一段代碼是用來加載圖片:
?
-(UIImage *) getImageFromURL:(NSString *)fileURL {//NSLog(@"執(zhí)行圖片下載函數(shù)");UIImage * result;NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]];result = [UIImage imageWithData:data];return result; }
通過這個(gè)方法處理后可以得到一個(gè)UIImage,這樣就可以放入U(xiǎn)I界面的UIImageView了。
?
/*-----------------------------------------------切入主題-----------------------------------------------*/
在APP開發(fā)中,加載網(wǎng)絡(luò)圖片中大多是以一連串的形式去加載圖片,所以當(dāng)圖片多的話,線程就會(huì)卡死= =!
所以,考慮到用戶體驗(yàn),這里需要找一種方法去異步加載圖片!
關(guān)于圖片異步加載這個(gè)思路,其實(shí)我也不太懂,于是借鑒了網(wǎng)上一個(gè)開源的項(xiàng)目SDWebImage去對UIImageView進(jìn)行擴(kuò)展,
最終優(yōu)化網(wǎng)絡(luò)圖片的加載,使之獲得兩個(gè)新特性:
1.多圖片異步加載。
2.加載完圖片會(huì)用一個(gè)圖片管理器去進(jìn)行緩存。
其中最重要的一段代碼如下:
?
- (void)setImageWithURL:(NSURL *)url refreshCache:(BOOL)refreshCache placeholderImage:(UIImage *)placeholder {// Remove in progress downloader from queueself.image = placeholder;if (url){if ([[CustomObject sharedCustomObject] isExistImage:url]) {NSLog(@"存在圖片");self.image = [[CustomObject sharedCustomObject]getImage:url];}else{dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{NSData * data = [[NSData alloc]initWithContentsOfURL:url];UIImage *image = [[UIImage alloc]initWithData:data];if (data != nil) {dispatch_async(dispatch_get_main_queue(), ^{[[CustomObject sharedCustomObject] addImage:image key:url];self.image = image;});}});}} }?
?
可以直接傳入一個(gè)NSURL的圖片路徑對象對圖片進(jìn)行加載,若加載不為空則把圖片緩存放入圖片管理器單例保存起來,下一次再調(diào)用這個(gè)方式時(shí)會(huì)判斷URL是否存在去讀緩存。
這樣異步加載,緩存圖片的任務(wù)就完成了。
實(shí)例源碼可以戳這里。OK。
主動(dòng)用心,工作努力,堅(jiān)持學(xué)習(xí),坦誠分享,正面樂觀,心存感恩
?
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的IOS开发笔记 - 基于SDWebImage的网络图片加载处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何通过cpuinfo信息查看几个物理c
- 下一篇: 关于运行中输入ping后,跳出“打开方式