iOS開發(fā)-SDWebImage框架的使用方法

首先到官方的github下載

++https://github.com/rs/SDWebImage++

把解壓出的SDWebImage文件夾導(dǎo)入到項(xiàng)目中

因?yàn)閕OS9中新增App Transport Security(簡(jiǎn)稱ATS)特性, 主要使到原來請(qǐng)求的時(shí)候用到的HTTP恋追,都轉(zhuǎn)向TLS1.2協(xié)議進(jìn)行傳輸。這也意味著所有的HTTP協(xié)議都強(qiáng)制使用了HTTPS協(xié)議進(jìn)行傳輸。所以我們需要在info.plist文件中添加一段代碼
  • 右鍵info.plist Open As Source code 添加
    以下這段代碼
<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>

如果不添加直接進(jìn)行HTTP請(qǐng)求是會(huì)收到如下錯(cuò)誤提示:

App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.

正式使用

  • 在你需要使用的地方導(dǎo)入頭文件
#import "SDWebImage/UIImageView+WebCache.h"
  • 調(diào)用sd_setImageWithURL:placeholderImage:方法,placeholderImage可以加一個(gè)顯示正在加載中的小圖片


 [_imageView sd_setImageWithURL:[NSURL URLWithString:@"http://fdfs.xmcdn.com/group18/M00/C5/A0/wKgJJVfDxfSwPSdDAAOUTzQfOSs424_ios_large.jpg"] placeholderImage:[UIImage imageNamed:@"加載中"]];

MRC

因?yàn)镾DWebImage默認(rèn)是在ARC中使用的如果在MRC中使用需要繼續(xù)如下幾步
  • 在Build Settings中將

    設(shè)為YES

  • 在Targets中如下,在每個(gè)SDWebImage文件后面添加-fobjc-arc

設(shè)置imageView的圖片

[cell.imageView sd_setImageWithURL:[NSURL URLWithString:app.icon] placeholderImage:[UIImage imageNamed:@"placehoder"]];

設(shè)置圖片并計(jì)算下載進(jìn)度

   //下載并設(shè)置圖片
/*
 第一個(gè)參數(shù):要下載圖片的url地址
 第二個(gè)參數(shù):設(shè)置該imageView的占位圖片
 第三個(gè)參數(shù):傳一個(gè)枚舉值,告訴程序你下載圖片的策略是什么
 第一個(gè)block塊:獲取當(dāng)前圖片數(shù)據(jù)的下載進(jìn)度
     receivedSize:已經(jīng)下載完成的數(shù)據(jù)大小
     expectedSize:該文件的數(shù)據(jù)總大小
 第二個(gè)block塊:當(dāng)圖片下載完成之后執(zhí)行該block中的代碼
     image:下載得到的圖片數(shù)據(jù)
     error:下載出現(xiàn)的錯(cuò)誤信息
     SDImageCacheType:圖片的緩存策略(不緩存,內(nèi)存緩存幢炸,沙盒緩存)
     imageURL:下載的圖片的url地址
 */
[cell.imageView sd_setImageWithURL:[NSURL URLWithString:app.icon] placeholderImage:[UIImage imageNamed:@"placehoder"] options:SDWebImageRetryFailed progress:^(NSInteger receivedSize, NSInteger expectedSize) {

    //計(jì)算當(dāng)前圖片的下載進(jìn)度
    NSLog(@"%.2f",1.0 *receivedSize / expectedSize);

} completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {

}];

系統(tǒng)級(jí)內(nèi)存警告如何處理

//取消當(dāng)前正在進(jìn)行的所有下載操作
[[SDWebImageManager sharedManager] cancelAll];

//清除緩存數(shù)據(jù)
//cleanDisk:刪除過期的文件數(shù)據(jù),計(jì)算當(dāng)前未過期的已經(jīng)下載的文件數(shù)據(jù)的大小,如果發(fā)現(xiàn)該數(shù)據(jù)大小大于我們?cè)O(shè)置的最大緩存數(shù)據(jù)大小麻蹋,那么程序內(nèi)部會(huì)按照按文件數(shù)據(jù)緩存的時(shí)間從遠(yuǎn)到近刪除,知道小于最大緩存數(shù)據(jù)為止焊切。

//clearMemory:直接刪除文件扮授,重新創(chuàng)建新的文件夾
//[[SDWebImageManager sharedManager].imageCache cleanDisk];
[[SDWebImageManager sharedManager].imageCache clearMemory];
  • SDWebImage默認(rèn)的緩存時(shí)間是1周

如何播放gif圖片

/*
5-1 把用戶傳入的gif圖片->NSData
5-2 根據(jù)該Data創(chuàng)建一個(gè)圖片數(shù)據(jù)源(NSData->CFImageSourceRef)
5-3 計(jì)算該數(shù)據(jù)源中一共有多少幀,把每一幀數(shù)據(jù)取出來放到圖片數(shù)組中
5-4 根據(jù)得到的數(shù)組+計(jì)算的動(dòng)畫時(shí)間-》可動(dòng)畫的image
[UIImage animatedImageWithImages:images duration:duration];
*/

如何判斷當(dāng)前圖片類型专肪,只判斷圖片二進(jìn)制數(shù)據(jù)的第一個(gè)字節(jié)

+ (NSString *)sd_contentTypeForImageData:(NSData *)data;

內(nèi)部如何進(jìn)行緩存處理刹勃?
使用了NSCache類,使用和NSDictionary類似

  • 沙盒緩存圖片的命名方式為對(duì)該圖片的URL進(jìn)行MD5加密 echo -n "url" |MD5
  • 當(dāng)接收到內(nèi)存警告之后嚎尤,內(nèi)部會(huì)自動(dòng)清理內(nèi)存緩存
    圖片的下載順序荔仁,默認(rèn)是先進(jìn)先出的
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市芽死,隨后出現(xiàn)的幾起案子乏梁,更是在濱河造成了極大的恐慌,老刑警劉巖收奔,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掌呜,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡坪哄,警方通過查閱死者的電腦和手機(jī)质蕉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門势篡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人模暗,你說我怎么就攤上這事禁悠。” “怎么了兑宇?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵碍侦,是天一觀的道長。 經(jīng)常有香客問我隶糕,道長瓷产,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任枚驻,我火速辦了婚禮濒旦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘再登。我一直安慰自己尔邓,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布锉矢。 她就那樣靜靜地躺著梯嗽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪沽损。 梳的紋絲不亂的頭發(fā)上灯节,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音绵估,去河邊找鬼显晶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛壹士,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播偿警,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼躏救,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了螟蒸?” 一聲冷哼從身側(cè)響起盒使,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎七嫌,沒想到半個(gè)月后少办,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诵原,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年英妓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了挽放。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蔓纠,死狀恐怖辑畦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情腿倚,我是刑警寧澤纯出,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站敷燎,受9級(jí)特大地震影響暂筝,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜硬贯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一焕襟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧澄成,春花似錦胧洒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至肾砂,卻和暖如春列赎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背镐确。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國打工包吝, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人源葫。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓诗越,卻偏偏與公主長得像,于是被迫代替她去往敵國和親息堂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嚷狞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容