SDWebImage框架使用方法

http異步加載圖片——SDWebImage使用方法

關於iOS上http異步圖片加載的工具,在網上看到兩個被推薦的開源工具。一個是EGOImageLoader,另一個是SDWebImage,兩種工具都自帶緩存機制,非常適用於我們這個應用,省去了定期清理本地圖片的麻煩。
我分別將兩種工具加到了新聞摘要列表中,查看效果,最終選定了SDWebImage。
兩種工具的對比如下:
1、顯示效率
EGOImageLoader在列表滾動過程中,對於顯示過的圖片,雖然有緩存,但是還要有1-2s的加載時間,用戶體驗非常不好,當快速滾動列表的時候,基本上看不到任何圖片,都是默認圖片。而SDWebImage就沒有這個問題,加載過的文件基本都是直接顯示,這也是選擇SDWebImage的主要原因

2、使用方便程度
從工具的使用角度來說,EGOImageLoader相對簡單一點,只需要普通的導入幾個文件,包含到需要使用的ViewController即可。而且它可以很容易找到設置緩存時間的地方進行設置,默認緩存時間是一天。

而SDWebImage的使用就相對複雜一點,具體添加方法如下。
(1)下載附件進行解壓(也可從https://github.com/rs/SDWebImage下載最新代碼),解壓到工程目錄下
(2)在工程左邊的目錄索引中右鍵選擇 Add Files To“工程名”,選擇SDWebImage.xcodeproj添加到Frameworks中
(3)在Target->Build Phases->Link Binary with Libraries中添加 ImageIO.Framework;與此同時我們可以看到系統會自動提示WorkSpace中可添加的庫文件,根據工程的類型(我們的工程使用的是ARC)選擇普通的還是ARC類的庫:libSDWebImage.a
(4)這時編譯可以通過,但是運行的時候會崩潰。還需要在target->Build Settings->Linking目錄下的Other Linker Flags裏面添加: 
-force_load ${BUILT_PRODUCTS_DIR}/libSDWebImage.a
這時候環境應該算配置完了,如果還是不能正常使用,可以參考這篇文章:http://stackoverflow.com/questions/8504953/sdwebimage-setimagewithurl-fails-when-used-to-set-image-of-a-uitableviewcell

使用的方法是在需要使用的ViewController內包含#import <SDWebImage/UIImageView+WebCache.h>
對於一個UIImageView的對象image,使用如下語句即可達成加載圖片的目的,placeholderImage就是加載過程中的默認圖片

[image setImageWithURL:(NSURL)  placeholderImage:(UIImage)];

如上所述就是SDWebImage最簡單的使用方法,它應該還有很多更優化的使用方法,有興趣的可以仔細研究一下,參考文檔的地址是:http://hackemist.com/SDWebImage/doc/


目前從顯示效果來看,加載速度較ftp要快很多,幾乎看不出加載時間。
未完成工作:現在還沒有深入到代碼內部詳細研究緩存的機制和時間和對流量的使用情況。有時間要對這些問題進行詳細論證和確認。
在此拋個磚,如果有更好的解決方法,歡迎指正~

發佈了17 篇原創文章 · 獲贊 5 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章