其實網上GitHub有很多第三方的,但是用起來比較麻煩,這里介紹最簡單的一種方式,自己就可以實現,(點擊按鈕開始播放動態圖)
1,集成SDWebImage之后,引入頭文件#import "UIImage+GIF.h"
2.初始化按鈕,(loadingImageView是定義的全局的UIImageView,自己定義下)
self.loadingImageView= [[UIImageView alloc]init];
UIButton* btn=[[UIButton alloc]initWithFrame:CGRectMake(0, 100, 50, 20)];
btn.backgroundColor=[UIColor redColor];
[self.view addSubview:btn];
[btn addTarget:self action:@selector(initLoadingImageView) forControlEvents:UIControlEventTouchUpInside];
3.點擊按鈕就可以實現了,非常簡單
- (void)initLoadingImageView
{
NSString *name = @"圖片的名字.gif";
NSString *filePath = [[NSBundle bundleWithPath:[[NSBundle mainBundle] bundlePath]] pathForResource:name ofType:nil];
NSData *imageData = [NSData dataWithContentsOfFile:filePath];
if (!self.loadingImageView) {
self.loadingImageView = [[UIImageView alloc]init];
}
self.loadingImageView.backgroundColor = [UIColor clearColor];
self.loadingImageView.image = [UIImage sd_animatedGIFWithData:imageData];
//這里可以修改要實現播放的gif的frame
self.loadingImageView.frame = CGRectMake(0, 100, 200, 100);
[self.view addSubview:self.loadingImageView];
[self.view bringSubviewToFront:self.loadingImageView];
}
如果想實現gif圖片的暫停和繼續播放的功能加入以下兩個方法就可以了
1.首先再viewDidLoad加入這個(player是CALayer類型的,定義為全局的)
// 設置imageView的layer
player = self.loadingImageView.layer;
2.實現這兩個方法,需要用哪個就點擊哪個直接把player傳過去就可以了
//暫停gif的方法
-(void)pauseLayer:(CALayer*)layer
{
CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];
layer.speed = 0.0;
layer.timeOffset = pausedTime;
}
//繼續gif的方法
-(void)resumeLayer:(CALayer*)layer
{
CFTimeInterval pausedTime = [layer timeOffset];
layer.speed = 1.0;
layer.timeOffset = 0.0;
layer.beginTime = 0.0;
CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;
layer.beginTime = timeSincePause;
}
