首先將SDWebImage導(dǎo)入項(xiàng)目
platform :ios, '8.0'
target ‘圖片緩存練習(xí)’ do
pod 'SDWebImage'
end
//庫(kù)名后不加版本,默認(rèn)最新版本
流程

盜圖
主要方法:
-
?? 加載圖片的幾種方法
加載圖片的方法在pods的UIImageView+WebCache類中

UIImageView+WebCache
說一下前幾種
1.沒有有占位圖的加載方式
- (void)sd_setImageWithURL:(nullable NSURL *)url
2.有占位圖的加載方式
////給一張默認(rèn)圖片,先使用默認(rèn)圖片,當(dāng)圖片加載完成后再替換,占位符的名字隨你定
- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder
3.沒占位圖的加載方式 并且實(shí)現(xiàn)回調(diào)Block完成下一步任務(wù)
- (void)sd_setImageWithURL:(nullable NSURL *)url completed:(nullable SDExternalCompletionBlock)completedBlock
4.使用可更換optionsType的加載方式
-(void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options
Options 枚舉如下:
- SDWebImageRetryFailed 默認(rèn)情況下,當(dāng)URL無法下載時(shí),URL就會(huì)被列入黑名單,這樣庫(kù)就不會(huì)繼續(xù)嘗試了。此標(biāo)記禁用此黑名單。
- SDWebImageLowPriority 默認(rèn)情況下,圖像下載是在UI交互過程中啟動(dòng)的,這標(biāo)志禁用該特性,導(dǎo)致在UIScrollView減速方面延遲下載。
- SDWebImageCacheMemoryOnly 此標(biāo)記禁用磁盤緩存
- SDWebImageProgressiveDownload 此標(biāo)志可以進(jìn)行漸進(jìn)式下載,在下載過程中,圖像會(huì)逐步顯示,就像瀏覽器所做的那樣。默認(rèn)情況下,圖像只顯示一次完全下載。
- SDWebImageRefreshCached 即使緩存了映像,也要尊重HTTP響應(yīng)緩存控制,并在需要的情況下從遠(yuǎn)程位置刷新映像。磁盤緩存將由NSURLCache來處理,而不是使用SDWebImage,這會(huì)導(dǎo)致輕微的性能下降。這個(gè)選項(xiàng)有助于處理在同一個(gè)請(qǐng)求URL后面更改的圖像,例如Facebook圖形api概要圖。如果刷新了緩存的圖像,那么完成塊就會(huì)被緩存的圖像和最后的圖像再次調(diào)用一次。只有當(dāng)你不能用嵌入的緩存破壞參數(shù)使你的url靜態(tài)時(shí),才使用這個(gè)標(biāo)志。
- SDWebImageContinueInBackground 在iOS 4+中,如果應(yīng)用程序進(jìn)入后臺(tái),可以繼續(xù)下載圖片。這是通過請(qǐng)求系統(tǒng)在后臺(tái)獲得額外的時(shí)間來完成請(qǐng)求完成的。如果后臺(tái)任務(wù)過期,操作將被取消。
- SDWebImageHandleCookies 通過設(shè)置NSMutableURLRequest來處理存儲(chǔ)在NSHTTPCookieStore中的cookie。HTTPShouldHandleCookies =是的;
- SDWebImageAllowInvalidSSLCertificates 啟用不受信任的SSL證書。用于測(cè)試目的。在生產(chǎn)中使用謹(jǐn)慎。
- SDWebImageHighPriority 默認(rèn)情況下,圖像按順序裝載在隊(duì)列中。這個(gè)標(biāo)志把它們移到隊(duì)列的前面。
- SDWebImageDelayPlaceholder 默認(rèn)情況下,在圖像加載時(shí)加載占位符圖像。此標(biāo)志將延遲加載占位符圖像,直到圖像完成加載。
- SDWebImageTransformAnimatedImage 我們通常不會(huì)在動(dòng)畫圖像上調(diào)用transformdownloade昏暗委托方法,因?yàn)榇蠖鄶?shù)轉(zhuǎn)換代碼會(huì)把它搞砸。無論如何,使用這個(gè)標(biāo)志來轉(zhuǎn)換它們。
- SDWebImageAvoidAutoSetImage 默認(rèn)情況下,圖像會(huì)在下載后添加到imageView中。但是在某些情況下,我們想要在設(shè)置圖像之前有手(例如,應(yīng)用一個(gè)過濾器或?qū)⑺砑拥浇徊嫠p動(dòng)畫中)使用這個(gè)標(biāo)記如果你想在成功完成時(shí)手工設(shè)置圖像
- SDWebImageScaleDownLargeImages 默認(rèn)情況下,圖像會(huì)被解碼,以尊重它們?cè)瓉淼拇笮?。在iOS上,這一標(biāo)志將把圖像縮小到與設(shè)備受限內(nèi)存兼容的大小。*如果“SDWebImageProgressiveDownload”標(biāo)志設(shè)置禁用縮減。
(以上均為復(fù)制粘貼)
圖片緩存
-
獲取
[SDImageCache sharedImageCache] getSize]; -
清理內(nèi)存緩存
[[SDImageCache sharedImageCache] clearMemory]; -
清理磁盤緩存的接口
[[SDImageCache sharedImageCache] clearDisk]; -
異步將所有過期的緩存映像從磁盤中刪除
[[SDImageCache sharedImageCache]deleteOldFiles];
-
Demo我加載圖片只用了一種方式,你如果想練下其他的方式,就改下代碼,都差不多,傳的參數(shù)不同,圖片URL我是盜用別人的,因?yàn)閳D片都是放在云服務(wù)器上的
注意:最重要的來了
- 如果請(qǐng)求是http而不是https,圖片是加載不出來的
解決方法:在Info.plist中添加NSAppTransportSecurity類型Dictionary。
在NSAppTransportSecurity下添加NSAllowsArbitraryLoads類型Boolean,值設(shè)為YES。

image.png