用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

细节

时间: 2024-12-08 21:04:13

用SDWebImage加载FLAnimatedImage的相关文章

sdwebimage-用SDwebimage加载图片,在模拟器上能显示,在真机中不能显示

问题描述 用SDwebimage加载图片,在模拟器上能显示,在真机中不能显示 用的sdwebimage加载图片,在模拟器上能正常显示,但是在真机中却不能显示出来 解决方案 android模拟器上显示正常 真机显示小

模仿SDWebImage实现异步加载图片

模仿SDWebImage实现异步加载图片 SDWebImage想必大家都不陌生吧,要实现它的图片异步加载功能这个还是很简单的. 注意:此处我只实现了异步加载图片,并没有将文件缓存到本地的打算哦:) 源码: UIImageView+YXImageView.h // // UIImageView+YXImageView.h // PicDemo // // Copyright (c) 2014年 Y.X. All rights reserved. // #import <UIKit/UIKit.h>

加载gif图片的方法:(需要SDWebImage方法)

#import "UIImage+GIF.h" 加载gif图片的方法:(需要SDWebImage方法) /**  *  加载图片  */ - (void)initLoadingImageView {     NSString  *name = @"loading.gif";     NSString  *filePath = [[NSBundle bundleWithPath:[[NSBundle mainBundle] bundlePath]]pathForRes

使用SDWebImage淡入淡出的方式加载图片

使用SDWebImage淡入淡出的方式加载图片 效果: 请通过以下方式下载源码: 找到它修改文件的地方: 以下是使用源码: // // ViewController.m // SDWebImageFade // // Created by YouXianMing on 14-10-5. // Copyright (c) 2014年 YouXianMing. All rights reserved. // #import "ViewController.h" #import "

ios-iOS使用sdwebimage解压过的image,为什么加载到imageview上的速度没有提高?

问题描述 iOS使用sdwebimage解压过的image,为什么加载到imageview上的速度没有提高? UIImage * decodeImage= [self decodedImageWithImage:image];//解压图片 方法1: self.imageview.image= decodeImage; //显示解压图片 方法2: self.imageview.image=image; // 显示原图 实测发现方法2的速度并没有比方法1快,为什么?反而在解压大图片的时候内存和cpu

SDWebImage动画加载图片

SDWebImage动画加载图片   效果   源码 https://github.com/YouXianMing/Animations // // PictureCell.m // SDWebImageLoadImageAnimation // // Created by YouXianMing on 15/4/30. // Copyright (c) 2015年 YouXianMing. All rights reserved. // #import "PictureCell.h"

iOS开发之加载大量网络图片优化

1.概述 在IOS下通过URL读一张网络图片并不像其他编程语言那样可以直接把图片路径放到图片路径的位置就ok,而是需要我们通过一段类似流的方式去加载网络图片,接着才能把图片放入图片路径显示.比如: ? 1 2 3 4 5 6 7 -(UIImage *) getImageFromURL:(NSString *)fileURL {   //NSLog(@"执行图片下载函数");       UIImage * result;       NSData * data = [NSData d

iOS开发swift版异步加载网络图片(带缓存和缺省图片)

iOS开发之swift版异步加载网络图片     与SDWebImage异步加载网络图片的功能相似,只是代码比较简单,功能没有SD的完善与强大,支持缺省添加图片,支持本地缓存.      异步加载图片的核心代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 5

ios-IOS 加载大量本地图片内存暴增

问题描述 IOS 加载大量本地图片内存暴增 在做浏览本地图片的时候,有大量的本地图片需要加载,初始化的时候就用循环的方式 把所有的图片都加载出来导致内存暴增.该怎么改进.最好有代码~ 解决方案 你的图片应该是以瀑布流的方式显示的把?用户看到的只有当前展示的图片,其他图片可以稍候再加载到内存中,你可以建立一个图片队列,设置上限数为30,即内存中最多存在30张图片 你如果不想自己写,可以使用 SDWebImage 来做,它的缓存机制做得比较全面 解决方案二: iOS 加载图片时的内存警告 解决方案三