IOS开发笔记 - 基于SDWebImage的网络图片加载处理
前言:
在IOS下通過URL讀一張網絡圖片并不像Asp.net那樣可以直接把圖片路徑放到圖片路徑的位置就ok,
而是需要我們通過一段類似流的方式去加載網絡圖片,接著才能把圖片放入圖片路徑顯示。
這里找了一段代碼是用來加載圖片:
?
-(UIImage *) getImageFromURL:(NSString *)fileURL {//NSLog(@"執行圖片下載函數");UIImage * result;NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]];result = [UIImage imageWithData:data];return result; }
通過這個方法處理后可以得到一個UIImage,這樣就可以放入UI界面的UIImageView了。
?
/*-----------------------------------------------切入主題-----------------------------------------------*/
在APP開發中,加載網絡圖片中大多是以一連串的形式去加載圖片,所以當圖片多的話,線程就會卡死= =!
所以,考慮到用戶體驗,這里需要找一種方法去異步加載圖片!
關于圖片異步加載這個思路,其實我也不太懂,于是借鑒了網上一個開源的項目SDWebImage去對UIImageView進行擴展,
最終優化網絡圖片的加載,使之獲得兩個新特性:
1.多圖片異步加載。
2.加載完圖片會用一個圖片管理器去進行緩存。
其中最重要的一段代碼如下:
?
- (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;});}});}} }?
?
可以直接傳入一個NSURL的圖片路徑對象對圖片進行加載,若加載不為空則把圖片緩存放入圖片管理器單例保存起來,下一次再調用這個方式時會判斷URL是否存在去讀緩存。
這樣異步加載,緩存圖片的任務就完成了。
實例源碼可以戳這里。OK。
主動用心,工作努力,堅持學習,坦誠分享,正面樂觀,心存感恩
?
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的IOS开发笔记 - 基于SDWebImage的网络图片加载处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何通过cpuinfo信息查看几个物理c
- 下一篇: 关于运行中输入ping后,跳出“打开方式