SDWebImage是一個第三方框架,用以實現網絡圖像的緩存,及處理等功能。
發展壯大離不開廣大客戶長期以來的信賴與支持,我們將始終秉承“誠信為本、服務至上”的服務理念,堅持“二合一”的優良服務模式,真誠服務每家企業,認真做好每個細節,不斷完善自我,成就企業,實現共贏。行業涉及水電改造等,在網站建設公司、全網營銷推廣、WAP手機網站、VI設計、軟件開發等項目上具有豐富的設計經驗。Github的托管下載地址: https://github.com/rs/SDWebImage
SDWebImage默認使用磁盤緩存,
在 沙盒/Library/Cache中可以找到帶WebImageCache字眼的目錄,可以找到緩存的圖片
SDWebImage以分類的形式,對UIKit中的控件擴展了網絡圖片加載接口,使用起來非常方便。
介紹SDWebImage中的幾個分類:
UIImageView加載網絡圖片
UIButton加載網絡圖片
UIImage顯示GIF圖片
并介紹圖片下載進度的監聽,以及框架內實現流程的簡要說明
UIImageView+WebCache分類
提供了大量的方法,從網絡中加載圖片,而且這些操作全部是異步的
- (void)sd_setImageWithURL:(NSURL *)url - (void)sd_setImageWithURL:(NSURL *)url completed:(SDWebImageCompletionBlock)completedBlock
部分方法還提供了占位圖片的操作
- (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder - (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder completed:(SDWebImageCompletionBlock)completedBlock
部分方法還提供了額外選項用于指定緩存的策略
- (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options - (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options completed:(SDWebImageCompletionBlock)completedBlock
如:
UIButton+WebCache分類
與UIImageView+WebCache類似,不過UIButton上可以顯示兩個圖片
背景圖片的加載
- (void)sd_setBackgroundImageWithURL:(NSURL *)url forState:(UIControlState)state - (void)sd_setBackgroundImageWithURL:(NSURL *)url forState:(UIControlState)state completed:(SDWebImageCompletionBlock)completedBlock - (void)sd_setBackgroundImageWithURL:(NSURL *)url forState:(UIControlState)state placeholderImage:(UIImage *)placeholder - (void)sd_setBackgroundImageWithURL:(NSURL *)url forState:(UIControlState)state placeholderImage:(UIImage *)placeholder completed:(SDWebImageCompletionBlock)completedBlock - (void)sd_setBackgroundImageWithURL:(NSURL *)url forState:(UIControlState)state placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options - (void)sd_setBackgroundImageWithURL:(NSURL *)url forState:(UIControlState)state placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options completed:(SDWebImageCompletionBlock)completedBlock
圖片的加載
- (void)sd_setImageWithURL:(NSURL *)url forState:(UIControlState)state - (void)sd_setImageWithURL:(NSURL *)url forState:(UIControlState)statecompleted:(SDWebImageCompletionBlock)completedBlock - (void)sd_setImageWithURL:(NSURL *)url forState:(UIControlState)stateplaceholderImage:(UIImage *)placeholder - (void)sd_setImageWithURL:(NSURL *)url forState:(UIControlState)stateplaceholderImage:(UIImage *)placeholder completed:(SDWebImageCompletionBlock)completedBlock - (void)sd_setImageWithURL:(NSURL *)url forState:(UIControlState)stateplaceholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options - (void)sd_setImageWithURL:(NSURL *)url forState:(UIControlState)stateplaceholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options completed:(SDWebImageCompletionBlock)completedBlock
UIImage+GIF分類,用于加載gif圖片
這個分類提供了創建GIF圖片對象的方法
+ (UIImage *)sd_animatedGIFNamed:(NSString *)name + (UIImage *)sd_animatedGIFWithData:(NSData *)data
有興趣的朋友,可以在框架中看看這兩個方法的實現代碼
圖片下載進度的監聽
很多App中,圖片加載時會有一個加載的進度條,UIImageView同樣提供了方法可以連續獲得圖片的下載進度:
- (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options progress:(SDWebImageDownloaderProgressBlock)progressBlock completed:(SDWebImageCompletionBlock)completedBlock
如:
SDWebImage的原理分析
SDWebImage支持異步的圖片下載+緩存,加載圖片的基本流程:
顯示placeholderImage,SDWebImageManager根據URL開始處理圖片
從內存緩存中查找圖片是否已被下載,如果找到,則回調顯示圖片
如果沒有,則在子線程中查找磁盤緩存,,如果找到,則回調顯示圖片
如果沒有,則開始從URL中下載圖片(使用一個SDWebImageDownloader下載器對象)
通過代理方式,得到圖片下載數據后,進行圖片解碼后,回調顯示圖片
將圖片保存到SDImageCache中,內存緩存和磁盤緩存同時保存,寫入磁盤的操作也將在子線程中執行
SDImageCache在初始化時會注冊一些消息通知
在內存警告或退到后臺時清理內存緩存,
在程序退出時清理過期圖片
圖片解碼的目的(以空間換時間)
UIImage的p_w_picpathWithData:每次都會將Data解壓成圖像,即每次顯示時都會有一個解壓操作
SDWebImageDecoder是先將data資源解壓畫在一張圖片上,顯示時不再需要解壓
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網站欄目:iOS網絡開發(6)網絡圖片加載開源框架SDWebImage-創新互聯
文章鏈接:http://vcdvsql.cn/article8/ejdip.html
成都網站建設公司_創新互聯,為您提供定制開發、虛擬主機、企業建站、手機網站建設、建站公司、移動網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯