1.系统UIImageView 多张图片组成动画

/**
* UIImageView 动画
* Memory-23M
*/
-(void)gifPlay1
{
// NSArray *array=@[@"image0.png",@"image1.png",@"image2.png"];
// UIImageView *imgview= [UIImageView imageViewAnimation:CGRectMake(50,80, 550/2, 200) imageNames:array duration:1]; UIImageView* animatedImageView = [[UIImageView alloc] initWithFrame:CGRectMake(50,80, 550/2, 200)];
animatedImageView.animationImages =@[[UIImage imageNamed:@"image0"],
[UIImage imageNamed:@"image1"],
[UIImage imageNamed:@"image2"],
];
animatedImageView.animationDuration = 1.0f;
animatedImageView.animationRepeatCount = 0;
[self.view addSubview: animatedImageView];
[animatedImageView startAnimating];
}

2.利用第三方库

1)IImageView-PlayGIF  YFGIFImageView

/**
* UIImageView-PlayGIF 是 UIImageView 子类,用来显示 GIF。UIIMageView-PlayGIF 性能高,而且占用的内存很低。
* https://github.com/yfme/UIImageView-PlayGIF
* Memory-21.9M
* #import "YFGIFImageView.h"
*/
-(void)gifPlay2
{
NSString *gifPath=[[NSBundle mainBundle] pathForResource:@"test" ofType:@"gif"];
YFGIFImageView *gifview=[[YFGIFImageView alloc]init];
gifview.backgroundColor=[UIColor clearColor];
gifview.gifPath=gifPath;
gifview.frame=CGRectMake(50, 100,550/2, 200);
[self.view addSubview:gifview];
[gifview startGIF];
}

2)SCGIFImageView

/**
* 摘要: SCGIFImageView是一个开源的GIF图片动画显示控件,通过将GIF的每一帧都取出来生成UIImage对象存放在一个数组中,然后使用NSTimer进行动画轮转。
* https://github.com/shichangone/SCGifExample
* Memory-22.5M
* #import "SCGIFImageView.h"
*/
-(void)gifPlay3
{
NSString* filePath = [[NSBundle mainBundle] pathForResource:@"test.gif" ofType:nil];
NSData* imageData = [NSData dataWithContentsOfFile:filePath];
SCGIFImageView* gifImageView = [[SCGIFImageView alloc]init];
[gifImageView setData:imageData];
gifImageView.frame = CGRectMake(50,100, gifImageView.image.size.width, gifImageView.image.size.height);
[self.view addSubview:gifImageView];
}

3)YLGIFImage

/**
* YLGIFImage 是异步 GIF 图像解码器和图像查看器,支持播放 GIF 图像,而且使用很少的内存。
* https://github.com/liyong03/YLGIFImage
* Memory-22.7M
* #import "YLImageView.h"
* #import "YLGIFImage.h"
*/
-(void)gifPlay5
{
YLImageView* imageView = [[YLImageView alloc] initWithFrame:CGRectMake(0, 160, 320, 240)];
[self.view addSubview:imageView];
imageView.image = [YLGIFImage imageNamed:@"test.gif"];
}

4)SDWebImageView里的UIImage+GIF

提供接口:

+ (UIImage *)sd_animatedGIFNamed:(NSString *)name;
+ (UIImage *)sd_animatedGIFWithData:(NSData *)data;
- (UIImage *)sd_animatedImageByScalingAndCroppingToSize:(CGSize)size;

/**
* 利用SDWebImageView 库播放gif
* Memory-22.6M
* #import "UIImage+GIF.h"
*/
-(void)gifPlay6
{
UIImage *image=[UIImage sd_animatedGIFNamed:@"test"];
UIImageView *gifview=[[UIImageView alloc]initWithFrame:CGRectMake(50,80,image.size.width, image.size.height)];
gifview.backgroundColor=[UIColor orangeColor];
gifview.image=image;
[self.view addSubview:gifview];
}

为MBProgressHUD 添加加载动画

/**
* MBProgressHUD 添加加载动画
* Memory-23.8M
* #import "UIImage+GIF.h"
* #import "MBProgressHUD.h"
*/
-(void)gifPlay6
{
UIImage *image=[UIImage sd_animatedGIFNamed:@"test"];
UIImageView *gifview=[[UIImageView alloc]initWithFrame:CGRectMake(0,0,image.size.width/2, image.size.height/2)];
gifview.image=image; MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.color=[UIColor grayColor];//默认颜色太深了
hud.mode = MBProgressHUDModeCustomView;
hud.labelText = @"加载中...";
hud.customView=gifview;
}

其它

微博客户端 VVebo 的作者开源了他自己为VVebo写的GIF解决方案 VVeboImageView, 占用内存很小。(iOS移动开发周报-第4期)

 
Demo下载
http://yunpan.cn/cj6JBN7mfETWE (提取码:226f)
 
 
 
 
 
 
 

iOS加载Gif图片的N种方式 By-H罗的更多相关文章

  1. qt加载背景图片的一种方式

    //加载背景图片 void LCTGrid::loadBgPicture() { QImage image; QPalette palette; image.load(m_sPicturePath); ...

  2. UIImage加载本地图片的两种方式

    UIImage加载图片方式一般有两种: (1)imagedNamed初始化:默认加载图片成功后会内存中缓存图片,这个方法用一个指定的名字在系统缓存中查找并返回一个图片对象.如果缓存中没有找到相应的图片 ...

  3. Unity加载本地图片的2种方式

    1. 使用 WWW 加载,详细查看 unity3d 官方文档. 2. 使用 System.IO 加载,lua 代码如下: local File = luanet.import_type("S ...

  4. ios网络学习------4 UIWebView的加载本地数据的三种方式

    ios网络学习------4 UIWebView的加载本地数据的三种方式 分类: IOS2014-06-27 12:56 959人阅读 评论(0) 收藏 举报 UIWebView是IOS内置的浏览器, ...

  5. 加载xib文件的两种方式

    一.加载xib文件的两种方式 1.方法一(NewsCell是xib文件的名称) NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@&quo ...

  6. 转 Velocity中加载vm文件的三种方式

    Velocity中加载vm文件的三种方式   velocitypropertiespath Velocity中加载vm文件的三种方式:    方式一:加载classpath目录下的vm文件 Prope ...

  7. Spring加载properties文件的两种方式

    在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取properties里面的配置,这样后期只需要改动properties文件即可, ...

  8. Hadoop生态圈-注册并加载协处理器(coprocessor)的三种方式

    Hadoop生态圈-注册并加载协处理器(coprocessor)的三种方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 到目前为止,大家已经掌握了如何使用过滤器来减少服务器端通过 ...

  9. Velocity中加载vm文件的三种方式

    Velocity中加载vm文件的三种方式: a.  加载classpath目录下的vm文件 /** * 初始化Velocity引擎 * --VelocityEngine是单例模式,线程安全 * @th ...

随机推荐

  1. VoIP语音处理流程和知识点梳理

    做音频软件开发10+年,包括语音通信.语音识别.音乐播放等,大部分时间在做语音通信.做语音通信中又大部分时间在做VoIP语音处理.语音通信是全双工的,既要把自己的语音发送出去让对方听到,又要接收对方的 ...

  2. django rest framework 自定义验证器

    一.基于钩子函数: 官网上的例子: 官方提示:如果字段声明在序列化类上时,就具有参数required=Fasle的作用,当函数名中没有包括字段名时,那么这个验证函数就不起作用 二.基于类的验证器: 使 ...

  3. 简单的sdn防火墙

    github仓库 演示视频 本次实验建立的拓扑 使用到的 pox 指令介绍,参考pox控制器学习笔记 1. forwarding.l2_learning 使OpenFlow交换机充当L2学习交换机的一 ...

  4. 新增访客数量MR统计之MR数据输出到MySQL

    关注公众号:分享电脑学习回复"百度云盘" 可以免费获取所有学习文档的代码(不定期更新)云盘目录说明:tools目录是安装包res 目录是每一个课件对应的代码和资源等doc 目录是一 ...

  5. HDU 2673-shǎ崽 OrOrOrOrz(C语言描述)

    问题描述 问题是: 为您提供了一系列不同的整数, 请选择 "数字" 如下: 首先选择最大的, 然后是最小的, 然后是第二个最大的, 第二个最小的. 直到所有的数字被选中.例如, 给 ...

  6. 网络协议学习笔记(二)物理层到MAC层,交换机和VLAN,ICMP与ping原理

    概述 之前网络学习笔记主要讲解了IP的诞生,或者说整个操作系统的诞生,一旦有了IP,就可以在网络的环境里和其他的机器展开沟通了.现在开始给大家讲解关于网络底层的相关知识. 从物理层到MAC层:如何在宿 ...

  7. Android官方文档翻译 四 1.2Running Your App

    Running Your App If you followed the previous lesson to create an Android project, it includes a def ...

  8. 18个示例详解 Spring 事务传播机制(附测试源码)

    什么是事务传播机制 事务的传播机制,顾名思义就是多个事务方法之间调用,事务如何在这些方法之间传播. 举个例子,方法 A 是一个事务的方法,方法 A 执行的时候调用了方法 B,此时方法 B 有无事务以及 ...

  9. tomcat容器启动失败疑难问题解决方案

    严重: 子容器启动失败java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: 初始化组件[or ...

  10. 短视频正当时,如何让你的App快速构建视频创作能力?

    视频编辑服务(Video Editor Kit)是华为开放给开发者快速构建视频编辑能力的服务,提供视频导入.编辑处理.特效渲染.视频导出.媒体资源管理等一站式视频处理能力.视频编辑服务为全球开发者提供 ...