SDWebImage 4.0 使用GIF 及遷移指南

剛剛更新pods 編譯程序,突然發(fā)現(xiàn)SDWebImage報(bào)錯(cuò)

5CFC472F-4DFD-4936-87B3-B47E94A87EC4.png

了解到SDWebImage4.0 更換了不少方法,還增加了幾個(gè)類,索性都研究一下

  • pod 更新SDWebImage版本為4.1.0


    38BDB086-B1E2-469E-8681-415EF14DC2BF.png
  • SDWebImage4.0 播放GIF 需要使用 FLAnimatedImage
    如果使用了用pods 除了pod 'SDWebImage' 還要添加下面?zhèn)z個(gè)
    pod 'SDWebImage/GIF'
    pod 'FLAnimatedImage'

4FCC6433-223B-428C-A89F-7E2F8F04A6D8.png

//使用很簡(jiǎn)單

#import <FLAnimatedImageView.h>
#import <FLAnimatedImageView+WebCache.h>

    FLAnimatedImageView *FLView = [[FLAnimatedImageView alloc]init];
    FLView.frame = CGRectMake(0, 64, SCREEN_WIDTH, 280);
    [FLView sd_setImageWithURL:[NSURL URLWithString:IMAGE2] placeholderImage:[UIImage imageNamed:[NSBundle zb_placeholder]]];
    [self.view addSubview:FLView];

FLAnimatedImageView+WebCache 內(nèi)部實(shí)行也很簡(jiǎn)單明了, 依然調(diào)用UIView +WebCache 的方法 在設(shè)置圖片的Block里 對(duì)回調(diào)里的參數(shù)imageData 進(jìn)行判斷如果是GIF 就使用FLAnimatedImage 的animatedImageWithGIFData方法進(jìn)行賦值

- (void)sd_setImageWithURL:(nullable NSURL *)url
          placeholderImage:(nullable UIImage *)placeholder
                   options:(SDWebImageOptions)options
                  progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock
                 completed:(nullable SDExternalCompletionBlock)completedBlock {
    __weak typeof(self)weakSelf = self;
    [self sd_internalSetImageWithURL:url
                    placeholderImage:placeholder
                             options:options
                        operationKey:nil
                       setImageBlock:^(UIImage *image, NSData *imageData) {
                           SDImageFormat imageFormat = [NSData sd_imageFormatForImageData:imageData];
                           if (imageFormat == SDImageFormatGIF) {
                               weakSelf.animatedImage = [FLAnimatedImage animatedImageWithGIFData:imageData];
                               weakSelf.image = nil;
                           } else {
                               weakSelf.image = image;
                               weakSelf.animatedImage = nil;
                           }
                       }
                            progress:progressBlock
                           completed:completedBlock];
}

FLAnimatedImageView本身就是UIImageView的封裝 订讼,用起來(lái)真的很快擂煞,配合SDWebImage加載GIF 都感覺不到下載的過程华坦,以為是本地加載的一樣 .在正常UITableView 列表試了下加載普通圖片更是小意思昆咽。完全可以替換UIImageView

  • 查找是否有對(duì)應(yīng)緩存的 方法 由返回BOOL 值 換成Block回調(diào)中參數(shù)返回BOOL值
//老版本
BOOL isInCache =[[SDImageCache sharedImageCache]diskImageExistsWithKey:@""];

// 4.0 版本
 [[SDImageCache sharedImageCache]diskImageExistsWithKey:@"" completion:^(BOOL isInCache) {}];
  • 刪除沙盒圖片 只有 帶Block回調(diào)的了
老版本
- (void)clearMemory;
- (void)clearDiskOnCompletion:(SDWebImageNoParamsBlock)completion;
- (void)clearDisk;
4.0 版本
- (void)clearMemory;
- (void)clearDiskOnCompletion:(nullable SDWebImageNoParamsBlock)completion;
  • 下載圖片的方法 方法名字由downloadImageWithURL 換成loadImageWithURL
    1.在加載進(jìn)度的Block回調(diào)里 增加了targetURL (圖片URL的參數(shù))
    2.在下載完成的Block回調(diào)里 增加了 data (返回二進(jìn)制)
//老版本
 [[SDWebImageManager sharedManager]downloadImageWithURL:[NSURL URLWithString:@""] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize) {
 } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
}];
//4.0 版本
[[SDWebImageManager sharedManager] loadImageWithURL:[NSURL URLWithString:[imageArray objectAtIndex:i]] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL) {
 } completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, SDImageCacheType cacheType, BOOL finished, NSURL * _Nullable imageURL) {
}];
  • UIImageView+WebCache UIButton+WebCache等category 的方法并沒改變
    只是里面的圖片替換邏輯 移動(dòng)到新增的UIView +WebCache 里了
- (void)sd_setImageWithURL:(nullable NSURL *)url
          placeholderImage:(nullable UIImage *)placeholder
                   options:(SDWebImageOptions)options
                  progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock
                 completed:(nullable SDExternalCompletionBlock)completedBlock {
    [self sd_internalSetImageWithURL:url
                    placeholderImage:placeholder
                             options:options
                        operationKey:nil
                       setImageBlock:nil
                            progress:progressBlock
                           completed:completedBlock];
}
  • 增加了個(gè)UIView +WebCache category
    此類作用是把SDWebImage 所有的 category 如 UIButton+WebCache,UIImageView+WebCache 等分類的圖片替換的邏輯 封裝到 一起使用铛碑。
- (void)sd_internalSetImageWithURL:(nullable NSURL *)url
                  placeholderImage:(nullable UIImage *)placeholder
                           options:(SDWebImageOptions)options
                      operationKey:(nullable NSString *)operationKey
                     setImageBlock:(nullable SDSetImageBlock)setImageBlock
                          progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock
                         completed:(nullable SDExternalCompletionBlock)completedBlock;
  • 增加了一個(gè)SDImageCacheConfig 類 把之前在SDImageCache 類里初始化的幾個(gè)屬性拿出來(lái)單獨(dú)封裝,使其他類也能使用
  • 增加了 NSImage+WebCache category macOS 平臺(tái)開發(fā)時(shí)使用的一個(gè) NSImage 的一個(gè)分類 不用太了解

我也只是 粗略的看了看 虽界,具體還有哪些改變汽烦,漏掉的,以后再補(bǔ)充

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末莉御,一起剝皮案震驚了整個(gè)濱河市撇吞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌礁叔,老刑警劉巖牍颈,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異琅关,居然都是意外死亡煮岁,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門涣易,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)画机,“玉大人,你說(shuō)我怎么就攤上這事新症〔绞希” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵徒爹,是天一觀的道長(zhǎng)戳护。 經(jīng)常有香客問我金抡,道長(zhǎng),這世上最難降的妖魔是什么腌且? 我笑而不...
    開封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任梗肝,我火速辦了婚禮,結(jié)果婚禮上铺董,老公的妹妹穿的比我還像新娘巫击。我一直安慰自己,他們只是感情好精续,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開白布坝锰。 她就那樣靜靜地躺著,像睡著了一般重付。 火紅的嫁衣襯著肌膚如雪顷级。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天确垫,我揣著相機(jī)與錄音弓颈,去河邊找鬼。 笑死删掀,一個(gè)胖子當(dāng)著我的面吹牛翔冀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播披泪,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼纤子,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了款票?” 一聲冷哼從身側(cè)響起控硼,我...
    開封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎艾少,沒想到半個(gè)月后象颖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡姆钉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年说订,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片潮瓶。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡陶冷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出毯辅,到底是詐尸還是另有隱情埂伦,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布思恐,位于F島的核電站沾谜,受9級(jí)特大地震影響膊毁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜基跑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一婚温、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧媳否,春花似錦栅螟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至掺逼,卻和暖如春吃媒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吕喘。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工赘那, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人兽泄。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓漓概,卻偏偏與公主長(zhǎng)得像漾月,于是被迫代替她去往敵國(guó)和親病梢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

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