Core Animation
2015-10-16 09:25
232 查看
• 简介
◦ 核心动画提供了一组非常强大的动画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
相关文章推荐
- webrtc音频引擎之压缩格式介绍
- 【读书笔记】iOS网络-Cookie
- 网络编程练习 模拟图形 登陆认证
- 【读书笔记】iOS网络-Cookie
- ubuntu亮度调节
- C语言字节对齐问题详解(zz)
- 月光微博客
- FireFox和VimFox插件--个人感觉最好用的火狐快捷键插件
- 冲压与锻造的区别
- 基于存储层面的hive metastore server的权限认证
- Java常见面试题
- Linux下使用CPAN进行Perl模块的安装
- JS基础知识梳理--setTimeout()&setInterval()
- Cocos2d中update与fixedUpdate的区别(一)
- 第六周项目5-后缀表达式
- Cocos2d中update与fixedUpdate的区别(一)
- Cocos2d中update与fixedUpdate的区别(一)
- Python3利用PyMySql连接MySQL数据库
- 推荐一些C#相关的网站、资源和书籍
- 从0开始学Java——JSP&Servlet——Tomcat和Apache的区别