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上不允许使用) 跟其他控制 ...
随机推荐
- emacs+ensime+sbt打造spark源码阅读环境
欢迎转载,转载请注明出处,徽沪一郎. 概述 Scala越来越流行, Spark也愈来愈红火, 对spark的代码进行走读也成了一个很普遍的行为.不巧的是,当前java社区中很流行的ide如eclips ...
- P4factory <Towards a better behavioral model: bmv2>
尝试使用bmv2行为模型来跑p4实例. 原文说明: We have released a new version of the behavioral model, written in C++. So ...
- Javascript 笔记与总结(2-3)Javascript 运算符、控制结构与对象操作
[连接运算符 + ] <script> console.log(1+2+'a'+3+4); </script> 输出: 3a34 [逻辑运算符]返回的是最早能判断表达式结果的那 ...
- RT-Thread 线程调度
/* 变量分配4字节对齐 */ ALIGN(RT_ALIGN_SIZE) /* 静态线程的 线程堆栈*/ ]; ]; /* 静态线程的 线程控制块 */ static struct rt_thread ...
- Sphinx+MySQL5.1x+SphinxSE+mmseg
一.不停止mysql的情况下安装SphinxSE 1.确定mysql版本,下载对应源码包 此处下载5.1.69的mysql源码包 #wget ftp://ftp.ntu.edu.tw/pub/MySQ ...
- spring简单事务管理器
事务管理器 <!-- Transaction manager for a single JDBC DataSource --> <bean id="transaction ...
- git-svn
sudo apt-get install git-svn svn作为一个优秀源码版本的管理工具,可以适合绝大多数项目.但是因为它的采用中心化管理,不可避免的存在本地代码的备份和版本管理问题.也就是说对 ...
- JavaScript判断文件的大小
function getFileSize(obj) {//obj 需要传入的参数为Input的对象 var objValue = obj.value; if (objValue == " ...
- Redis学习笔记(2)-String
package cn.com; import java.util.List; import redis.clients.jedis.Jedis; public class Redis_String { ...
- VirtualBox 使用技巧
一.VirtualBox 的快捷键 VirtualBox 默认的 Host 键是 Right Ctrl Host 键可以点击 Oracle VM VirtualBox 管理器的左上角 “管理”-> ...