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];
    
}
ios加载GIF图片_第1张图片
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];
}

ios加载GIF图片_第2张图片
magic.gif

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

你可能感兴趣的:(ios加载GIF图片)