IOS学习动画二之 Core Animation (3)
三、关键帧动画:CAKeyframeAnimation
(1)values属性
values属性指明整个动画过程中的关键帧点。
(2)path属性
这是一个 CGPathRef 对象,默认是空的,当我们创建好CAKeyframeAnimation的实例的时候,可以通过制定一个自己定义的path来让某一个物体按照这个路径进行动画。这个值默认是nil,当其被设定的时候,values这个属性就被覆盖 。
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, rectLayer.position.x - 15, rectLayer.position.y - 15);
CGPathAddLineToPoint(path, NULL, 320 - 15, rectLayer.frame.origin.y);
CGPathAddLineToPoint(path, NULL, 320 - 15, rectLayer.frame.origin.y + 100);
CGPathAddLineToPoint(path, NULL, 15, rectLayer.frame.origin.y + 100);
CGPathAddLineToPoint(path, NULL, 15, rectLayer.frame.origin.y);
rectRunAnimation.path = path;
CGPathRelease(path);
(3)keyTimes属性
该属性是一个数组,用以指定每个子路径(AB,BC,CD)的时间。如果你没有显式地对keyTimes进行设置,则系统会默认每条子路径的时间为:ti=duration/(5-1),即每条子路径的duration相等,都为duration的1\4。当然,我们也可以传个数组让物体快慢结合。例如,你可以传入{0.0, 0.1,0.6,0.7,1.0},其中首尾必须分别是0和1,因此tAB=0.1-0, tCB=0.6-0.1, tDC=0.7-0.6, tED=1-0.7.....
(4)timeFunctions属性
用过UIKit层动画的同学应该对这个属性不陌生,这个属性用以指定时间函数,类似于运动的加速度,有以下几种类型。上例子的AB段就是用了淡入淡出效果。记住,这是一个数组,你有几个子路径就应该传入几个元素
kCAMediaTimingFunctionLinear//线性kCAMediaTimingFunctionEaseIn//淡入kCAMediaTimingFunctionEaseOut//淡出kCAMediaTimingFunctionEaseInEaseOut//淡入淡出kCAMediaTimingFunctionDefault//默认
(5)calculationMode属性
该属性决定了物体在每个子路径下是跳着走还是匀速走,跟timeFunctions属性有点类似
const kCAAnimationLinear//线性,默认
const kCAAnimationDiscrete//离散无中间过程 keyTimes设置的时间仍生效 跳跃地出现在各个关键帧上
const kCAAnimationPaced//平均,keyTimes跟timeFunctions失效
const kCAAnimationCubic//平均,同上
const kCAAnimationCubicPaced//平均,同上
此外,动画的暂停与开始可以通过下面的方式做到:
-(void)pauseLayer:(CALayer*)layer {CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];layer.speed = 0.0;layer.timeOffset = pausedTime;
}
-(void)resumeLayer:(CALayer*)layer {CFTimeInterval pausedTime = [layer timeOffset];layer.speed = 1.0;layer.timeOffset = 0.0;layer.beginTime = 0.0;CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;layer.beginTime = timeSincePause;
}
转载于:https://blog.51cto.com/5934497/1703455
IOS学习动画二之 Core Animation (3)相关推荐
- ios开发——使用CALayer和Core Animation做动画效果
一. CALayer (一). CALayer简介 在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是UIView,其实UIV ...
- 玩转iOS开发:5.《Core Animation》CALayer的Transforms
文章转至我的个人博客: https://cainluo.github.io/14777052484078.html 作者感言 之前我们所了解的CALayer都是比较抽象化, 好在<Core An ...
- IOS学习笔记二十三对象归档(NSKeyedArchiver、NSKeyedUnArchiver、NSCodeing)
1.NSKeyedArchiver.NSKeyedUnArchiver 1).archiveRootObject:toFile 归档对象到这个路径文件 2).unarchiveObjectWithFi ...
- IOS学习笔记二十一(NSDictionary、NSMutableDictionary)
1.NSDictionary.NSMutableDictionary 可以理解为java里面的map,一个key对应一个value,key不可以重复 NSDictionary不可变,NSMutable ...
- IOS学习笔记二十NSSet和NSMutableSet
1.NSSet.NSMutableSet NSSet元素无序.不能重复 NSMutableSet元素无序.不能重复,有一些向集合中增加元素的功能.删除元素....... 2.测试Demo int ma ...
- IOS动画(Core Animation)总结 (参考多方文章)
一.简介 iOS 动画主要是指Core Animation框架.官方使用文档地址为:Core Animation Guide. Core Animation是IOS和OS X平台上负责图形渲染与动画的 ...
- iOS动画集锦(Core Animation)
iOS 动画主要是指 Core Animation 框架, Core Animation是 iOS 和 OS X 平台上负责图形渲染与动画的基础框架.Core Animation 可以作用于动画视图或 ...
- iOS动画-从UIView到Core Animation
首先,介绍一下UIView相关的动画. UIView普通动画: [UIView beginAnimations: context:];[UIView commitAnimations]; 动画属性设置 ...
- iOS - Core Animation 核心动画
1.UIView 动画 具体讲解见 iOS - UIView 动画 2.UIImageView 动画 具体讲解见 iOS - UIImageView 动画 3.CADisplayLink 定时器 具体 ...
最新文章
- 用jenkins搭建android自动打包环境
- JavaScript常用技巧之数组操作
- android camera 检测,检测Android Camera文件夹
- 大数问题(一个特别大的数需要用数组或字符串来表示)
- wex5 php开发,WeX5平台PHP开发 使用说明文档
- 【PAT - 甲级1045】Favorite Color Stripe(30分)(dp,LIS类问题)
- JS关键字和保留字汇总(小记)
- 关于“我的藏书阁:.NET/数据库应用开发”的几点看法。
- D3 Geographies
- Error:Connection activation failed: No suitable device found for this connection
- oracle找出大于1g的表,表占用太大空间问题!
- php 匹配标签内的文本内容 preg_match_all strip_tags
- JVM——字节码指令(转)
- 火狐插件 测试浏览器兼容性_在Firefox中测试和报告插件兼容性
- mac中实用的录音软件有哪些?
- 光线追踪与全域光渲染keyshot中文
- 极客日报:iPhone13系列售价曝光:4535元起售;微信暂停个人帐号新用户注册;Android 12 Beta 3.1发布
- 学习游戏服务器开发必看,C++游戏服务器开发常用工具介绍
- C语言重载宏函数的小技巧
- VPB测试 使用Osgdem运行例子