SDWebimage(1)
sd_setImageWithURL:placeholderImage:options:progress:completed:
這個是最核心的呼叫方法,placeholderImage:options:progress:completed 這幾個引數都是可以不要的.
SDWebImageOptions可以傳入多個引數SDWebImageRetryFailed 預設失敗的url被記錄,下次就不在下載,這個option會繼續下載. SDWebImageLowPriority 預設UI互動的時候開始下載,這個option會延後下載,等UIScrollView減速後 SDWebImageCacheMemoryOnly 只混存,不存入磁碟 SDWebImageProgressiveDownload 預設圖片下載完成才顯示一次,這個option是顯示漸進式下載,邊下邊顯示的. SDWebImageRefreshCached 重新整理快取,相同的url,還是會重新下載 SDWebImageContinueInBackground 後臺下載 SDWebImageHandleCookies NSMutableURLRequest.HTTPShouldHandleCookies = YES SDWebImageAllowInvalidSSLCertificates 允許使用未信任的證書,一般用於測試,生成模式時需要注意 SDWebImageHighPriority 優先下載 SDWebImageDelayPlaceholder 延遲佔點陣圖,預設是下載過程中就用佔點陣圖,這個會等下載完成之後. SDWebImageTransformAnimatedImage 改變動畫形象,但是需要自己去實現代理方法 SDWebImageAvoidAutoSetImage 得到圖片之後不會立即設定imageView,你需要自己操作。
progress與completed是兩個blockprogress:^(NSInteger receivedSize, NSInteger expectedSize) completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL)
根據回傳的東西可以做自己想要的操作,比如進度條顯示,比如完成之後做個什麼顯示之類的。sd_cancelCurrentImageLoad
取消當前的下載
利用runtime,objc_setAssociatedObject給imageUrl賦值
如果是延遲佔點陣圖 就先設定imageView的image
然後判斷url是否為空 當為空的時候 直接呼叫completedBlock
不為空就先看ActivityIndicatorView是否show,這個應該是在呼叫sd_setImageWithURL之前就對imageView設定了的
呼叫@selector(downloadImageWithURL:options:progress:completed:)
建立SDWebImageCombinedOperation例項,completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL)
裡則是根據獲取圖片重新整理介面的操作@selector(downloadImageWithURL:options:progress:completed:)
方法中先在快取中讀取圖片,未讀到就到磁碟中去讀取。這裡就又要根據option看程式碼怎麼走了。就可能出現如果是之前呼叫的url並未獲取到圖片,則不再請求,獲取取到了圖片,就直接讀取快取,也不請求了。還有失敗的url是否儲存。然後 @selector(downloadImageWithURL:options:progress:completed:)
建立Operation新增到queue裡開始執行. 根據connection的調的代理方法回撥block,執行block裡面的程式碼,當error的時候把url加入到self.failedURLs,根據option來決定是否移除url或者儲存image方式。同時也傳送了通知開始下載,正在接受資料,停止下載,完成下載,但是發現監聽呼叫的是 動態載入的例項方法,而且只有ActivityIndicator的show和stop.並沒有全運用起來
大致看了看整個流程,SDWebimage高度封裝 使用起來十分方便,大概流程看到的就是這樣吧,更細節的地方下次再來看。注意SDWebImageOptions的選擇。
另外有一個收穫是看SDWebImageContinueInBackground
發現的,進入後臺之後還可以執行程式碼,可以呼叫UIApplication的beginBackgroundTaskWithExpirationHandler:
例項方法,來向iOS 借點時間這個就單獨再記錄一篇。
相關文章
- MJMJRefresh、SDWebImageWeb
- 圖解SDWebImage圖解Web
- SDWebImage中文說明Web
- iOS SDWebImage 學習iOSWeb
- SDWebImage原始碼解析Web原始碼
- 2016筆記——SDWebImage筆記Web
- SDWebImage 原始碼分析Web原始碼
- SDWebImage原始碼解讀Web原始碼
- SDWebImage的快取策略Web快取
- iOS開發框架--SDWebImageiOS框架Web
- iOS複習和麵試中有關SDWebImage可能知識點總結(1)iOSWeb
- 原始碼閱讀:SDWebImage(十六)——SDWebImageTransition原始碼Web
- 原始碼閱讀:SDWebImage(十三)——SDWebImageDownloader原始碼Web
- 原始碼閱讀:SDWebImage(十四)——SDWebImageManager原始碼Web
- 原始碼閱讀:SDWebImage(十五)——SDWebImagePrefetcher原始碼Web
- 原始碼閱讀:SDWebImage(二)——SDWebImageCompat原始碼Web
- 原始碼閱讀:SDWebImage(十一)——SDImageCache原始碼Web
- 原始碼閱讀:SDWebImage(八)——SDWebImageGIFCoder原始碼Web
- 原始碼閱讀:SDWebImage(九)——SDWebImageCodersManager原始碼Web
- 原始碼閱讀:SDWebImage(十)——SDImageCacheConfig原始碼Web
- 原始碼閱讀:SDWebImage(七)——SDWebImageImageIOCoder原始碼Web
- 原始碼閱讀:SDWebImage(五)——SDWebImageFrame原始碼Web
- 原始碼閱讀:SDWebImage(六)——SDWebImageCoderHelper原始碼Web
- 原始碼閱讀:SDWebImage(四)——SDWebImageCoder原始碼Web
- 原始碼閱讀:SDWebImage(十二)——SDWebImageDownloaderOperation原始碼Web
- SDWebImage 快取機制(筆記)Web快取筆記
- SDWebImage(v3.7.6) 原始碼學習Web原始碼
- 原始碼閱讀:SDWebImage(十七)——UIView+WebCacheOperation原始碼WebUIView
- 原始碼閱讀:SDWebImage(十八)——UIView+WebCache原始碼WebUIView
- 原始碼閱讀:SDWebImage(一)——從使用入手原始碼Web
- 原始碼閱讀:SDWebImage(三)——NSData+ImageContentType原始碼Web
- 原始碼閱讀:SDWebImage(二十)——UIButton+WebCache原始碼WebUI
- SDWebImage原始碼解析之SDWebImageManager的註解Web原始碼
- SDWebImage面試常問點知識點Web面試
- 優秀開源庫SDWebImage原始碼淺析Web原始碼
- SDWebImage支援URL不變時更新圖片內容Web
- iOS 除SDWebImage之外清理記憶體中快取iOSWeb記憶體快取
- SDWebImage 載入https報錯 無法載入問題WebHTTP
- SDWebImage載入圖片的URL是同一個(如何處理)Web