項目測試過程中, 發(fā)現(xiàn)了一個問題, 界面滑動時卡頓, 而且還會閃退。
沒有無緣故的閃退, 也沒有無緣由的卡頓, 說到底還是代碼寫的有問題,那就去分析一下吧。
先看之前的代碼:

雖然使用了SDWebImage的類來加載, 但是用的是sd_animatedGIFWithData的方法。這個方法是SDWebImage4.0之前加載gif圖片的方法, 使用NSData來處理圖片數(shù)據(jù), 并沒有緩存到數(shù)據(jù), 每次加載都要去處理一遍, 造成內(nèi)存的暴增以及界面顯示的卡頓。
怎么解決呢?
很簡單, 升級你的SDWebImage到4.0以上, 然后使用FLAnimatedImageView來進行加載。
具體步驟:
-
pod install
Podfile文件中將pod SDWebImage 改為如下代碼:
pod 'SDWebImage', '~> 4.0.0'
pod 'SDWebImage/GIF'
pod 'FLAnimatedImage', '~> 1.0'
pod insatll成功后是這樣的:


- 導(dǎo)入頭文件
在你需要的類里面先導(dǎo)入頭文件:
#import "FLAnimatedImageView+WebCache.h"
創(chuàng)建一個FLAnimatedImageView的對象:
@property (nonatomic, strong) FLAnimatedImageView *gifIconImage;
懶加載處理:
- (FLAnimatedImageView *)gifIconImage
{
if (!_gifIconImage)
{
_gifIconImage = [[FLAnimatedImageView alloc] init];
}
return _gifIconImage;
}
- 使用
在你的cell或者任何你需要放置gif的地方,使用如下代碼:
NSURL *imgUrl = [[NSBundle mainBundle] URLForResource:@"qulit" withExtension:@"gif"];
[self.gifIconImage sd_setImageWithURL:imgUrl];
這里使用了本地圖片, 你也可以直接用這個方法加載網(wǎng)絡(luò)圖片, 從服務(wù)返回的圖片等~~
好了,到此完工,項目里cell滾動卡頓以及內(nèi)存暴增的問題完美解決~~
開心到飛起?。?!