iOS加载Gif图片的N种方式
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期)
iOS加载Gif图片的N种方式相关推荐
- c语言加载本地图片,Unity加载本地图片的2种方式
1. 使用 WWW 加载,详细查看 unity3d 官方文档. 2. 使用 System.IO 加载,lua 代码如下: local File = luanet.import_type("S ...
- Android加载GIF图片的两种方式
飞哥语录:得到一件东西最好的方式是让自己配得上它. 方式一:使用第三开源框架直接在布局文件中加载gif 1.在工程的build.gradle中添加如下 buildscript {repositorie ...
- Unity加载本地图片的2种方式
1. 使用 WWW 加载,详细查看 unity3d 官方文档. 2. 使用 System.IO 加载,lua 代码如下: local File = luanet.import_type("S ...
- ios网络学习------4 UIWebView的加载本地数据的三种方式
ios网络学习------4 UIWebView的加载本地数据的三种方式 分类: IOS2014-06-27 12:56 959人阅读 评论(0) 收藏 举报 UIWebView是IOS内置的浏览器, ...
- java配置文件实现方式_java相关:详解Spring加载Properties配置文件的四种方式
java相关:详解Spring加载Properties配置文件的四种方式 发布于 2020-4-29| 复制链接 摘记: 一.通过 context:property-placeholder 标签实现配 ...
- Spring加载properties文件的两种方式
2019独角兽企业重金招聘Python工程师标准>>> 在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取pro ...
- spring加载ApplicationContext.xml的四种方式
spring加载ApplicationContext.xml的四种方式 spring 中加载xml配置文件的方式,好像有4种, xml是最常见的spring 应用系统配置源.Spring中的几种容器都 ...
- Python加载csv文件的两种方式
本文主要讲解下Python加载csv文件的两种方式,如果知道如何处理的就不必往下看了! 下面来简单介绍下. 实例中的数据集是kaggle的Digit Recognizer的train.csv文件,数据 ...
- iOS 开发之 pdf 文档的加载与浏览的 4 种方式
原文链接:http://www.jianshu.com/p/1d4305a02ea5 在我们的开发中,有些像电子书类型的 app 的开发会涉及到 pdf 文档的加载与展示.由于笔者项目中正好涉及到这块 ...
最新文章
- Sublime遇见中文乱码问题?
- 2:0!谷歌 AI “AlphaStar“ 虐杀职业星际玩家
- asn1学习笔记 约束
- abaqus二次开发python 建立集合,ABAQUS二次开发-Python脚本运行方式
- python调用函数出现未定义_python – 为什么函数参数之外的“self”会给出“未定义”的错误?...
- 高手问答精选:Go 语言 —— 云计算时代的 C 语言
- 问:新来的同事都自愿996,这是内卷还是努力啊?
- UTF-8, Unicode, GB2312格式串转换之C语言版
- 腾讯互娱开源分布式开发框架 Pebble
- 猫眼娱乐上市首日破发 收盘价14.64港元
- SpringMVC中RestFul风格
- 变速恒频风电机组的优缺点_变速恒频双馈风力发电机的主要优点和基本原理
- 无法阻止的电竞热潮-用电竞连接世界
- 计算机录制视频的方法,怎么录制电脑屏幕视频步骤(电脑录屏的方法有4种)...
- 华为业绩发布会:5G产品和供货没有受到“实体清单”影响
- 67 Ways to Increase Conversion with Cognitive Biases
- win10用不了计算机一级,教你一招解决Win10计算器打不开的问题
- GitHub数据库榜单第一:Redis核心原理实践PDF,点赞已过百万+
- 一代盘神谢幕!百度网盘 Pandownload 开发者被抓了!
- rhq监控软件_用RHQ监视怪物
热门文章
- 短视频源码,成品短视频app源码搭建第一步
- html5与cs6,【CS6新功能介绍】EPUB 和 HTML5
- PyCharm - Optimizing Imports (优化导入)
- 典型相关分析(Canonical Correlation Analysis,CCA)原理及Python、MATLAB实现
- 【一起来刷Python题】——16.进制转换器
- Oulu-CASIA WebFace and FER database
- = ~和|=各是什么意思的含义
- android phonegap 开发教程,phonegap(Cordova) 入门教程
- 二叉树 php,PHP数据结构与算法:二叉树
- 安卓手机管理_云仓(云仓管理系统)V1.1.3 安卓手机版