原生的UIImageView是不支持gif格式图片的,以下是我总结的三种方法,希望可以帮助到你。
一、用UIWebView加载本地gif文件
-(void)webViewLoadGif {
UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
NSString *path = [[NSBundle mainBundle] pathForResource:@"dancer" ofType:@"gif"];
NSURL *url = [NSURL fileURLWithPath:path];
NSData *data = [NSData dataWithContentsOfURL:url];
NSURL *baseURL = [url URLByDeletingLastPathComponent];
[webView loadData:data MIMEType:@"image/gif" textEncodingName:@"utf-8" baseURL:baseURL];
[self.view addSubview:webView];
}
webView的缺点就是不好控制图片的大小,当然你也可以把它做成html文件,直接用webview加载就可以了。
二、用SDWebImage加载本地的gif文件
SDWebImage4.0以后,加载gif图片,需要在SDWebImage的基础上再单独导入FLAnimatedImageView和FLAnimatedImage文件,然后把UIImageView和UIimage用上边这两个类替换掉就可以了。
//首先把本地gif文件转成NSData格式
-(NSData *)imageData {
if (!_imageData) {
NSString *path = [[NSBundle mainBundle] pathForResource:@"magic" ofType:@"gif"];
_imageData = [NSData dataWithContentsOfFile:path];
}
return _imageData;
}
-(void)SDLoadLocalGif {
FLAnimatedImageView *gifView = [[FLAnimatedImageView alloc] initWithFrame:self.view.bounds];
FLAnimatedImage *image = [FLAnimatedImage animatedImageWithGIFData:self.imageData];
gifView.animatedImage = image;
gifView.contentMode = UIViewContentModeScaleAspectFit;
[self.view addSubview:gifView];
}
三、用SDWebImage加载网络的gif文件
这个就更加简单了,直接用sd_setImageWithURL方法就可以加载,前提也是要用FLAnimatedImageView来加载。
-(void)SDLoadNetwarkGif {
FLAnimatedImageView *gifView = [[FLAnimatedImageView alloc] initWithFrame:self.view.bounds];
[gifView sd_setImageWithURL:[NSURL URLWithString:@"http://img4.duitang.com/uploads/item/201211/24/20121124112047_KUFxK.gif"]];
gifView.contentMode = UIViewContentModeScaleAspectFit;
[self.view addSubview:gifView];
}
需要注意的是SDWebImage的SDK本身并不包含FLAnimatedImageView和FLAnimatedImage文件,需要单独从GitHub下载。
附上demo:https://github.com/melody1237/loadGif