Core Animation - 图层时间

在前面的CAAnimation中,用到了多种种图层动画,既然是动画,所以他们都是动态的,每个动画都有自己的发生时间,接下来看看Core Animation是如何来跟踪时间的:

1.CAMediaTiming协议

CAMediaTiming定义了一段动画内用来控制逝去时间的属性集合,CALayer和CAAnimation都实现了这一协议,所以时间才能被任意一个图层或者动画控制。

时间的控制涉及到duration和repeatCount两个属性,它们默认都为0,但只是相对的,实际为0.25和1。一组动画总时长是由duration和repeatCount共同控制的:

duration是完成一次完整的动画所需要的时间
repeatCount是动画重复的次数
T=duration * repeatCount

2.相对时间
时间是相对的,每个动画都有自己的描述时间,可以独立的加速,延时,漂移。
beginTime指定动画开始的延时时间;
timeOffset指定动画开始的时间点(加入一个动画duration为2s,timeOffset为1,那么动画是从1这个时间点开始的,相当于起点变为1s时的动画位置)
speed是动画速度,默认为1,与duration成反比,若duration为1,速度在原来基础上变为两倍,那么,duration本来为1s的动画就会变为0.5s,就像车行驶一段固定路程,速度变大,相应的时间就变短了;
removeOnCompletion设置为NO,表示动画运行结束后保持之前状态,否则会回到原点,fillMode有四个值:

当 removedOnCompletion = NO;

 kCAFillModeForwards  //动画结束后保持当前状态
 kCAFillModeBackwards  //在动画开始执行结束后回到起点状态
 kCAFillModeBoth  //动画结束后保持当前状态,再次开始的时候回到第一次运行的起点
 kCAFillModeRemoved  //动画结束后回到起点状态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodingFire

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值