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上不允许使用) 跟其他控制 ...
随机推荐
- RT-Thread信号量的基本操作
抽象的来讲,信号量的特性如下:信号量是一个非负整数(车位数),所有通过它的线程/进程(车辆)都会将该整数减一(通过它当然是为了使用资源),当该整数值为 0 时,所有试图通过它的线程都将处于等待状态.在 ...
- js里面的等于号--
一个是赋值等于号,二个是对比等于号,那么三个等于号是什么用的呢 有时候会看到在判断两个对象是否相等的时候使用了三个等号(===),它和两个等号(==)有什么区别呢?简单来说就是使用“==”时,如果 ...
- 七 mybatis的延迟加载
1 延迟加载 1.1 什么是延迟加载 resultMap可以实现高级映射(使用association.collection实现一对一及一对多映射),association.coll ...
- Freemarker的第二次使用~list的元素是数组
在上次初次使用Freemarker作为模版后,我再次使用它.这次的需求是: xml文档的某个节点的属性A和其一个子节点的某个属性B有关联,属性B的值需要随着属性A的值变化.而属性A的值有4个值,现在需 ...
- 智能手机,医疗诊断,云会议(gotomeeting/citrix)
在诊断领域已出现很多大有希望的创新,它们可能会起到真正的变革作用. 例如,有一种新技术可以让健康护理工作者用一部智能手机拍摄高质量的视网膜图像.这些数码照片像素很高,足以帮助检测白内障.黄斑退化.糖尿 ...
- Chart控件,把Y轴设置成百分比
这次所有属性设置都用代码(就当整理便于以后查询). 在窗体放置一个Chart控件,未做任何设置:然后编写代码: //设置 chart2.Legends[ ].Enabled = false;//不显示 ...
- Redis-秒杀场景应用
Redis Util实现 package test.jedis; import java.util.List; import java.util.Set; import redis.clients.j ...
- XCode中的单元测试:编写测试类和方法(内容意译自苹果官方文档)
当你在工程中通过测试导航栏添加了一个测试target之后, xcode会在测试导航栏中显示该target所属的测试类和方法. 这一章演示了怎么创建测试类,以及如何编写测试方法. 测试targets, ...
- Java高级之虚拟机垃圾回收机制
博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved ! 区别于C语言手动回收,Java自动执行垃圾回收,但为了执行高效 ...
- 将数据导入hive,将数据从hive导出
一:将数据导入hive(六种方式) 1.从本地导入 load data local inpath 'file_path' into table tbname; 用于一般的场景. 2.从hdfs上导入数 ...