ios加载GIF图片

原生的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];
    
}
dancer.gif

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];
}

magic.gif

需要注意的是SDWebImage的SDK本身并不包含FLAnimatedImageView和FLAnimatedImage文件,需要单独从GitHub下载。
附上demo:https://github.com/melody1237/loadGif

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.系统UIImageView 多张图片组成动画 /** * UIImageView 动画 * Memor...
    zhengelababy阅读 9,043评论 3 6
  • Gif图片是非常常见的图片格式,尤其是在聊天的过程中,Gif表情使用地很频繁。但是iOS竟然没有现成的支持加载和播...
    weicyNO_1阅读 1,806评论 0 0
  • Gif图片是非常常见的图片格式,尤其是在聊天的过程中,Gif表情使用地很频繁。但是iOS竟然没有现成的支持加载和播...
    iOS_大菜鸟阅读 3,053评论 1 5
  • 1. 原生方法: UIWebView特点:加载速度略长,性能更优,播放的gif动态图更加流畅。 UIImagVie...
    奋斗的蜗牛阅读 4,409评论 1 1
  • 早上好!#幸福实修#~每天进步1%#幸福实修10班-22号-@金珠清--富阳 20170812(19/30) 【幸...
    金珠清阅读 270评论 1 1