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种方式相关推荐

  1. c语言加载本地图片,Unity加载本地图片的2种方式

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

  2. Android加载GIF图片的两种方式

    飞哥语录:得到一件东西最好的方式是让自己配得上它. 方式一:使用第三开源框架直接在布局文件中加载gif 1.在工程的build.gradle中添加如下 buildscript {repositorie ...

  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. java配置文件实现方式_java相关:详解Spring加载Properties配置文件的四种方式

    java相关:详解Spring加载Properties配置文件的四种方式 发布于 2020-4-29| 复制链接 摘记: 一.通过 context:property-placeholder 标签实现配 ...

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

    2019独角兽企业重金招聘Python工程师标准>>> 在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取pro ...

  7. spring加载ApplicationContext.xml的四种方式

    spring加载ApplicationContext.xml的四种方式 spring 中加载xml配置文件的方式,好像有4种, xml是最常见的spring 应用系统配置源.Spring中的几种容器都 ...

  8. Python加载csv文件的两种方式

    本文主要讲解下Python加载csv文件的两种方式,如果知道如何处理的就不必往下看了! 下面来简单介绍下. 实例中的数据集是kaggle的Digit Recognizer的train.csv文件,数据 ...

  9. iOS 开发之 pdf 文档的加载与浏览的 4 种方式

    原文链接:http://www.jianshu.com/p/1d4305a02ea5 在我们的开发中,有些像电子书类型的 app 的开发会涉及到 pdf 文档的加载与展示.由于笔者项目中正好涉及到这块 ...

最新文章

  1. Sublime遇见中文乱码问题?
  2. 2:0!谷歌 AI “AlphaStar“ 虐杀职业星际玩家
  3. asn1学习笔记 约束
  4. abaqus二次开发python 建立集合,ABAQUS二次开发-Python脚本运行方式
  5. python调用函数出现未定义_python – 为什么函数参数之外的“self”会给出“未定义”的错误?...
  6. 高手问答精选:Go 语言 —— 云计算时代的 C 语言
  7. 问:新来的同事都自愿996,这是内卷还是努力啊?
  8. UTF-8, Unicode, GB2312格式串转换之C语言版
  9. 腾讯互娱开源分布式开发框架 Pebble
  10. 猫眼娱乐上市首日破发 收盘价14.64港元
  11. SpringMVC中RestFul风格
  12. 变速恒频风电机组的优缺点_变速恒频双馈风力发电机的主要优点和基本原理
  13. 无法阻止的电竞热潮-用电竞连接世界
  14. 计算机录制视频的方法,怎么录制电脑屏幕视频步骤(电脑录屏的方法有4种)...
  15. 华为业绩发布会:5G产品和供货没有受到“实体清单”影响
  16. 67 Ways to Increase Conversion with Cognitive Biases
  17. win10用不了计算机一级,教你一招解决Win10计算器打不开的问题
  18. GitHub数据库榜单第一:Redis核心原理实践PDF,点赞已过百万+
  19. 一代盘神谢幕!百度网盘 Pandownload 开发者被抓了!
  20. rhq监控软件_用RHQ监视怪物

热门文章

  1. 短视频源码,成品短视频app源码搭建第一步
  2. html5与cs6,【CS6新功能介绍】EPUB 和 HTML5
  3. PyCharm - Optimizing Imports (优化导入)
  4. 典型相关分析(Canonical Correlation Analysis,CCA)原理及Python、MATLAB实现
  5. 【一起来刷Python题】——16.进制转换器
  6. Oulu-CASIA WebFace and FER database
  7. = ~和|=各是什么意思的含义
  8. android phonegap 开发教程,phonegap(Cordova) 入门教程
  9. 二叉树 php,PHP数据结构与算法:二叉树
  10. 安卓手机管理_云仓(云仓管理系统)V1.1.3 安卓手机版