SDWebImage圖片下載完成后漸進顯示動畫

大部分APP在圖片下載完成后都有一個漸進顯示的動畫,本文講下在不動SDWebImage代碼的前提下,怎么給下載完成后的圖片加上漸進顯示的動畫,這是最終的效果:

2017-02-12 22_53_44.gif

一般情況下,我們都會寫一個UIImageViewcategory來處理圖片下載,代碼如下:

- (void)setWithImageURL:(NSString *)imageURL placeholder:(UIImage *)placeholder completion:(void (^)(UIImage *))completion
{
        [self sd_setImageWithURL:[NSURL URLWithString:imageURL]
                placeholderImage:placeholder
                       completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
                               // handle downloaded image
                           }
                       }];
        
}

completed回調(diào)中,我們可以獲取到下載完成的image,圖片的緩存類型?;卣{(diào)完成后,不做任何處理的話,那么下載完的圖片會直接加載到UIImageView上。這樣對于用戶來講會比較生硬,給圖片加上一個漸進顯示的動畫效果會好很多。

要實現(xiàn)這個效果,我們會用到CATransition這個類,CATransitionCAAnimation的一個子類,CATransition的官方定義是An object that provides an animated transition between a layer's states. You can transition between a layer's states by creating and adding a CATransition object to it. 就是說我們可以通過CATransition來轉(zhuǎn)換layer的狀態(tài),那么想實現(xiàn)漸進顯示的動畫效果,我們只需要加一個CATransitionUIImageView對象上。

那么CATransition都有哪些transition的種類呢?看一下官方文檔,總共有4種:

  • kCATransitionFade
  • kCATransitionMoveIn
  • kCATransitionPush
  • kCATransitionReveal

第一種kCATransitionFade的解釋是The layer’s content fades as it becomes visible or hidden.,看上去正是我們需要的transition type。通過一個CATransition使得圖片加載由hidden變成visible狀態(tài)時有一個漸進顯示的動畫效果。

完整代碼如下:

[self sd_setImageWithURL:[NSURL URLWithString:imageURL]
        placeholderImage:placeholder
               completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
                   if (image && cacheType == SDImageCacheTypeNone) {
                       CATransition *transition = [CATransition animation];
                       transition.type = kCATransitionFade;
                       transition.duration = 0.3;
                       transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
                       [weakself.layer addAnimation:transition forKey:nil];
                   }
               }];

轉(zhuǎn)載請注明出處,原文地址:http://kobedai.me/p9rsts-5o/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在iOS中隨處都可以看到絢麗的動畫效果,實現(xiàn)這些動畫的過程并不復(fù)雜,今天將帶大家一窺iOS動畫全貌。在這里你可以看...
    F麥子閱讀 5,260評論 5 13
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,044評論 4 61
  • 在iOS中隨處都可以看到絢麗的動畫效果,實現(xiàn)這些動畫的過程并不復(fù)雜,今天將帶大家一窺ios動畫全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,686評論 6 30
  • 本文轉(zhuǎn)載自:http://www.cocoachina.com/ios/20150105/10812.html 為...
    idiot_lin閱讀 1,374評論 0 1
  • 01 天朝是個官本位的社會,只要是個正式注冊的機構(gòu),總免不了會有人蒞臨造訪,如果是上級來人,那可能就是“視察"。 ...
    孤山踏歌閱讀 783評論 5 7

友情鏈接更多精彩內(nèi)容