用SDWebImage加载FLAnimatedImage

简介:

用SDWebImage加载FLAnimatedImage

 

效果

 

源码

https://github.com/YouXianMing/Animations



//
//  GifPictureController.m
//  Animations
//
//  Created by YouXianMing on 16/2/21.
//  Copyright © 2016年 YouXianMing. All rights reserved.
//

#import "GifPictureController.h"
#import "FLAnimatedImage.h"
#import "FLAnimatedImageView.h"
#import "UIImageView+WebCache.h"
#import "UIView+SetRect.h"
#import "GCD.h"

@interface GifPictureController ()

@end

@implementation GifPictureController

- (void)setup {
    
    [super setup];
    
    // https://github.com/Flipboard/FLAnimatedImage
    
    self.contentView.layer.masksToBounds = YES;
    
    FLAnimatedImageView *gifImageView = [[FLAnimatedImageView alloc] init];
    gifImageView.frame                = CGRectMake(0.0, 0.0, 100.0, 100.0);
    [self.contentView addSubview:gifImageView];
    
    __weak GifPictureController *wself = self;
    NSString *imagePath                = @"http://images2015.cnblogs.com/blog/607542/201601/607542-20160123090832343-133952004.gif";
    NSData   *gifImageData             = [self imageDataFromDiskCacheWithKey:imagePath];
    
    if (gifImageData) {
        
        [wself animatedImageView:gifImageView data:gifImageData];
        
    } else {
        
        NSURL *url = [NSURL URLWithString:imagePath];
        [[SDWebImageDownloader sharedDownloader] downloadImageWithURL:url
                                                              options:0
                                                             progress:nil
                                                            completed:^(UIImage *image, NSData *data, NSError *error, BOOL finished) {
                                                                
                                                                [[[SDWebImageManager sharedManager] imageCache] storeImage:image
                                                                                                      recalculateFromImage:NO
                                                                                                                 imageData:data
                                                                                                                    forKey:url.absoluteString
                                                                                                                    toDisk:YES];
                                                                
                                                                [[GCDQueue mainQueue] execute:^{
                                                                    
                                                                    [wself animatedImageView:gifImageView data:data];
                                                                }];
                                                            }];
    }
}

- (void)animatedImageView:(FLAnimatedImageView *)imageView data:(NSData *)data {

    FLAnimatedImage *gifImage = [FLAnimatedImage animatedImageWithGIFData:data];
    imageView.frame           = CGRectMake(0, 0, gifImage.size.width, gifImage.size.height);
    imageView.center          = self.contentView.middlePoint;
    imageView.animatedImage   = gifImage;
    imageView.alpha           = 0.f;
    
    [UIView animateWithDuration:1.f animations:^{
        
        imageView.alpha = 1.f;
    }];
}

- (NSData *)imageDataFromDiskCacheWithKey:(NSString *)key {
    
    NSString *path = [[[SDWebImageManager sharedManager] imageCache] defaultCachePathForKey:key];
    return [NSData dataWithContentsOfFile:path];
}

@end

细节


目录
相关文章
|
图形学 索引
|
缓存 数据安全/隐私保护
SDWebImage的应用(常用)
SDWebImage的应用(常用)
234 0
SDWebImage的应用(常用)
|
存储 安全 Java
Picasso图片加载器简单封装
Picasso是一款当下好用并且流行的图片加载器,在这里分享一下我的简单封装,小巧玲珑、方便使用。废话不多讲直接上代码。 首先Picasso在github上面的显示地址:https://github.com/square/picasso 然后根据当下的依赖版本,添加依赖在你的Module的build.gradle内部。
896 0
|
缓存
|
缓存 Android开发 C++
android图片加载库Glide
什么是Glide? Glide是一个加载图片的库,作者是bumptech,它是在泰国举行的google 开发者论坛上google为我们介绍的,这个库被广泛的运用在google的开源项目中。 Glide解决什么问题? Glide是一个非常成熟的图片加载库,他可以从多个源加载图片,如:网路,本地,Uri等,更重要的是他内部封装了非常好的缓存机制并且在处理图片的时候能保持一
2317 0
|
图形学
Unity3dAssetbundle创建与加载
【Assetbundle创建与加载】 Unity有两种动态加载机制:一种是Resource.Load。一种是AssetBundle。Assetbundle是Unity Pro提供的功能,它可以把多个游戏对象或者资源二进制文件封装到Assetbundle中。
1155 0
|
存储 缓存 开发工具

热门文章

最新文章