ios-序列帧动画核心代码简单介绍以及封装
- imageView的属性,isAnimating在这里用来当正执行;一个动画的时候,禁止开启其他动画.
- UIImage imageNamed这个方法加载的图片是有缓存的,它是把所有的图片先加载到内存中,再执行动画
- 优点是: 执行动画效率高,启动时间短.
- 缺点: 内存可能占用过大,造成程序闪退
- UIImage imageWithContentsOfFile 这种方式是通过加载图片的路径的方式加载图片.添加到可变数组的是图片的路径.在执行动画的时候是根据图片的路径来加载图片到内存中的.
- (void)beginAnimationWithImageCount:(int)count imageName:(NSString *)imageName {
// 如果当前的图片框正在执行一个动画, 那么不开启一个新的动画
if (self.imgView1.isAnimating) return;
// 1. 把要执行动画的图片设置UIImageView(图片框)
NSMutableArray *arrayM = [NSMutableArray array];
for (int i = 0; i < count; i++) {
NSString *imgName = [NSString stringWithFormat:@"%@%03d", imageName, i + 1];
// 通过+ imageNamed:这个方法加载的图片, 是有缓存的
// UIImage *img = [UIImage imageNamed:imgName];
// 没有缓存的加载图片的方式:
// 1》 确定图片的完整路径
NSString *img_path = [[NSBundle mainBundle] pathForResource:imgName ofType:@"png"];
// 2》通过调用imageWithContentsOfFile:方法来加载图片
UIImage *img = [UIImage imageWithContentsOfFile:img_path];
// 把图片对象添加到数组中
[arrayM addObject:img];
}
// 把要执行动画的图片设置给图片框
self.imgView1.animationImages = arrayM;
// 2. 设置动画的持续时间
self.imgView1.animationDuration = 0.1 * self.imgView1.animationImages.count;
// 3. 设置动画的重复次数
self.imgView1.animationRepeatCount = 1;
// 4. 启动动画
[self.imgView1 startAnimating];
// 清除图片内存
// self.imgView1.animationImages = nil;
// [self.imgView1 setAnimationImages:nil];
// 等待动画执行完毕后, 再清除内存
[self.imgView1 performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:self.imgView1.animationDuration];
}
ios-序列帧动画核心代码简单介绍以及封装的更多相关文章
- iOS开发数据库篇—FMDB简单介绍
iOS开发数据库篇—FMDB简单介绍 一.简单说明 1.什么是FMDB FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API 2.FMDB的优点 使用起来 ...
- iOS开发多线程篇—多线程简单介绍
iOS开发多线程篇—多线程简单介绍 一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcod ...
- iOS开发UI篇—UITabBarController简单介绍
iOS开发UI篇—UITabBarController简单介绍 一.简单介绍 UITabBarController和UINavigationController类似,UITabBarControlle ...
- iOS开发UI篇—Modal简单介绍
iOS开发UI篇—Modal简单介绍 一.简单介绍 除了push之外,还有另外一种控制器的切换方式,那就是Modal 任何控制器都能通过Modal的形式展⽰出来 Modal的默认效果:新控制器从屏幕的 ...
- iOS开发UI篇—Kvc简单介绍
ios开发UI篇—Kvc简单介绍 一.KVC简单介绍 KVC key valued coding 键值编码 KVC通过键值间接编码 补充: 与KVC相对的时KVO,即key valued observ ...
- iOS开发UI篇—UIWindow简单介绍
iOS开发UI篇—UIWindow简单介绍 一.简单介绍 UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow iOS程序启动完毕后,创建的第一个视图控件就是UIWi ...
- iOS开发多线程篇—NSOperation简单介绍
iOS开发多线程篇—NSOperation简单介绍 一.NSOperation简介 1.简单说明 NSOperation的作⽤:配合使用NSOperation和NSOperationQueue也能实现 ...
- iOS开发拓展篇—UIDynamic(简单介绍)
iOS开发拓展篇—UIDynamic(简单介绍) 一.简单介绍 1.什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 可以认为是一种物理引擎,能模拟 ...
- iOS开发UI篇—popoverController简单介绍
iOS开发UI篇—popoverController简单介绍 一.简单介绍 1.什么是UIPopoverController 是iPad开发中常见的一种控制器(在iPhone上不允许使用) 跟其他控制 ...
随机推荐
- maven资源文件的相关配置
构建Maven项目的时候,如果没有进行特殊的配置,Maven会按照标准的目录结构查找和处理各种类型文件. src/main/java和src/test/java 这两个目录中的所有*.java文件会 ...
- Yii2目录结构
assets 前端资源文件夹,大致用于管理css js等前端资源文件等 commands 包含命令行命令 文件为控制器文件 config 应用程序的配置文件 controllers 控制器文 ...
- 什么JSONP
JSONP 是JSON with padding(填充式JSON 或参数式JSON)的简写,是应用JSON 的一种新方法,在后来的Web 服务中非常流行.JSONP 看起来与JSON 差不多,只不过是 ...
- 20145235 《Java程序设计》第8周学习总结
教材学习内容总结 15.1.1日志API简介 使用日志的起点是logger类,logger实例的创建有许多要处理的要素,必须使用logger的静态方法getLogger(). 通常在哪个类上取得的lo ...
- smarty3.0中文手册文档API及使用指南
1.安装Smarty3.0一.什么是smarty?smarty是一个使用PHP写出来的模板PHP模板引擎,它提供了逻辑与外在内容的分离,简单的讲,目的就是要使用PHP程序员同美工分离,使用的程序员改变 ...
- MySQL问题汇总(持续更新)
1.This function has none of DETERMINISTIC, NO SQL 原因: Mysql如果开启了bin-log, 我们就必须指定我们的函数是否是 1 DETERMINI ...
- JS面相对象
一.理解对象: //第一种:基于Object对象 var person = new Object(); person.name = 'My Name'; person.age = ; person.g ...
- nrf51822裸机教程-IIC
关于IIC总线的核心有以下几点: :时钟线高电平期间必须保持数据线不变. :时钟线低电平期间可以改变数据. :时钟线和数据线上都要接上拉电阻,以使总线不工作时,两根线的电平都处于高电平状态. :每个传 ...
- jfinal
http://blog.csdn.net/zb0567/article/details/21083021
- 关于java字符串编译优化问题
情景一:不好的字符串拼接习惯 起因是这样的:一个大牛在写了一篇关于java字符串优化问题的讲解,他提到:不要使用strObj+otherValue的方法将otherValue转换为字符串形式,因 ...