CoreAnimation-04-核心动画必备基础
概述
- 简介
- 核心动画提供了一组非常强大的动画API,通过该组API可以高效的实现绝大部分绚丽的动画效果
- 注意事项
- 核心动画的操作在子线程中执行,不会阻塞主线程
- 核心动画直接作用与CALayer对象上,不是UIView对象上
- 核心动画与UIView动画的区别
- 核心动画不会改变控件的frame属性,显示的只是一种假象
- UIView动画会改变控件的frame属性,显示的是控件真实地frame属性
核心动画类
核心动画相关类的关系图

此图来源官方文档,不知为何右下角不是CAKeyframeAnimation,而是协议。CAKeyframeAnimation为CAPropertyAnimation的可直接使用子类
CAAnimation与CAPropertyAnimation
- 二者都是抽象类,不可以直接使用,需要使用其子类
- CAAnimation可直接使用的子类,
- CAAnimationGroup,组动画
- CATransaction,转场动画
- CAPropertyAnimation可直接使用的子类
- CABasicAnimation,基本动画
- CAKeyframeAnimation,关键帧动画
CAAnimation类
- 3个重要的属性
- timingFunction(CAMediaTimingFunction *),速度控制函数
- delegate(id),动画代理
- removedOnCompletion(BOOL),动画执行完毕是否将其从图层上移除
CAAnimation的代理方法
注意
CAAnimation的代理方法是以NSObject分类的方式实现的,如图

代理方法
- 动画开始时调用
- (void)animationDidStart:(CAAnimation *)anim;
- 动画结束时调用
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag;
CAMediaTiming协议
- 常用属性
如图中属性- beginTime(CFTimeInterval),开始时间
- duration(CFTimeInterval),单次动画的执行时间
- speed(float),动画速度
- timeOffset(CFTimeInterval),从时间偏移量timeOffset开始执行动画,并将timeOffset之前的动画压缩并拼接到尾部
- repeatCount(float),重复次数
- repeatDuration(CFTimeInterval),动画的重复时间,与repeatCount两者选择时间最短者
- autoreverses(BOOL),是否恢复到动画开始状态(以动画的方式)
- fillMode(NSString *),动画的填充模式
动画的填充模式
- 注意
- 若要使填充模式有效,通常设置动画的removedOnCompletion属性为NO
- 4种模式
- kCAFillModeForwards,动画结束后,layer保持动画结束的状态
- kCAFillModeBackwards,动画加入到layer中,立即进入动画初始状态等待动画开始执行
- kCAFillModeBoth,同时具备以上两种模式
- kCAFillModeRemoved,动画结束后,layer会恢复到原来的状态
动画的速度控制函数
- kCAMediaTimingFunctionLinear,匀速
- kCAMediaTimingFunctionEaseIn,缓慢进入,加速离开
- kCAMediaTimingFunctionEaseOut,全速进入,减速到达目标地点
- kCAMediaTimingFunctionEaseInEaseOut,缓慢进入,中途加速,减速到达目标地点
- kCAMediaTimingFunctionDefault,默认速度,即kCAMediaTimingFunctionEaseInEaseOut
CoreAnimation-04-核心动画必备基础的更多相关文章
- IOS 动画专题 --iOS核心动画
iOS开发系列--让你的应用“动”起来 --iOS核心动画 概览 通过核心动画创建基础动画.关键帧动画.动画组.转场动画,如何通过UIView的装饰方法对这些动画操作进行简化等.在今天的文章里您可以看 ...
- IOS开发系列 --- 核心动画
原始地址:http://www.cnblogs.com/kenshincui/p/3972100.html 概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥i ...
- iOS:CALayer核心动画层
CALayer:核心动画层 简介: Core Animation 是跨平台的,支持iOS环境和Mac OS X环境 学习核心动画之前,需要先理解CALayer,因为核心动画操作的对象不是UIView, ...
- iOS_核心动画(二)
目 录: 一.Core Animation开发步骤 二.Core Animation的继承结构 三.CAAnimation常用的属性 四.CAPropertyAnimation(属性动画) 五.CAB ...
- iOS_核心动画CALayer(一)
目 录: 一.核心动画简介 二.图层与视图之间的关系 三.CALayer的使用说明 四.CALayer的隐式动画属性 五.在CALayer上绘图 六.总结 一.核心动画简介 Core Anim ...
- iOS核心动画以及UIView动画的介绍
我们看到很多App带有绚丽狂拽的特效,别出心裁的控件设计,很大程度上提高了用户体验,在增加了实用性的同时,也赋予了app无限的生命力.这些华丽的效果很多都是基于iOS的核心动画原理实现的,本文介绍一些 ...
- iOS开发UI篇—核心动画(基础动画)
转自:http://www.cnblogs.com/wendingding/p/3801157.html 文顶顶 最怕你一生碌碌无为 还安慰自己平凡可贵 iOS开发UI篇—核心动画(基础动画) iOS ...
- iOS CoreAnimation 核心动画
一 介绍 一组非常强大的动画处理API 直接作用在CALAyer上,并非UIView(UIView动画) CoreAnimation是所有动画的父类,但是不能直接使用,应该使用其子类 属性: dura ...
- 核心动画基础动画(CABasicAnimation)关键帧动画
1.在iOS中核心动画分为几类: 基础动画(CABasicAnimation) 关键帧动画(CAKeyframeAnimation) 动画组(CAAnimationGroup) 转场动画(CATran ...
随机推荐
- Visual Studio 2010 简体中文旗舰、专业版(MSDN原版下载)
Visual Studio 2010 简体中文旗舰.专业版(MSDN原版下载)(Visual Studio 2010 ultimate professional x86 dvd)2010[光盘镜像]- ...
- .NET通用开发框架
在开源中国社区,简单整理了下比较好的.NET通用开发框架.一个好的通用框架大概包括:开源.扩展性好.灵活性好.复用性好.维护性好.易测试.易发布.易部署.快速业务搭建(或业务集成).通用性强.参考资料 ...
- Android 学习笔记之如何实现简单相机功能
PS:看来算法和数据结构还是非常有用的,以后每天都练习两道算法题目...这次忘了对代码进行折叠了..导致篇幅过长... 学习内容: 1.Android如何实现相机功能... 2.如何实现音频的录制.. ...
- Android SQLite的ORM接口实现(一)---findAll和find的实现
最近在看Android的ORM数据库框架LitePal,就想到可以利用原生的SQLite来实现和LitePal类似的ORM接口实现. LitePal有一个接口是这样的: List<Status& ...
- javascript中&&和||的区别
javascript中&&和||的区别 &&和||操作符两边不是布尔类型时,系统会转换成布尔类型值再计算(空字符串.null.0都会被转成false),结果本身不变. ...
- Sql Server来龙去脉系列 必须知道的权限控制基础篇
题外话:最近看到各种吐槽.NET怎么落寞..NET怎么不行了..NET工资低的帖子.我也吐槽一句:一个程序猿的自身价值不是由他选择了哪一门技术来决定,而是由他自身能创造出什么价值来决定. 在进入本篇内 ...
- IDM主机上安装融合应用程序配置框架
IDM主机上安装融合应用程序配置框架 安装Oracle融合应用程序>设置>身份和访问管理节点安装融合应用程序配置框架 由于我们使用Oracle VirtualBox虚拟机这一次,我们在 ...
- Linq之group子句
在Linq查询语句中,group子句主要作用是对查询的结果集进行分组.并返回元素类型为IGrouping<TKey,TElement>的对象序列. 下面我们在代码实例中创建一个GroupQ ...
- 变废为宝,将Discuz废弃的cache机制引入到memory体系中
Discuz的source/class/cache目录,代表着相应的缓存机制,但实际上废弃很多年了. Discuz用Memory代表了缓存,里面内置了memcache等多种缓存驱动. 但很多人的开发环 ...
- Javascript定时跳转
因为做项目,用到跳转回上级页面,这里设置定时3秒跳转到目标页面 <script> setInterval("myInterval()",3000);//1000为1秒钟 ...