iOS动画篇_CoreAnimation(超详细解析核心动画)
CAAnimation是什么呢?
CAAniamtion是一个抽象类,遵循着CAMediaTiming和CAAciotn两个协议。通过他的4个子类,我们可以实现很多绚丽的动画效果。
CAAnimation下有几个属性
timingFunction,这个呢,指定的是动画的节奏。所谓节奏是什么什么意思呢?就是动画执行的快慢交替。有如下几个可选项
kCAMediaTimingFunctionLinear//线性节奏,就是匀速
kCAMediaTimingFunctionEaseIn//淡入,缓慢加速进入,然后匀速
kCAMediaTimingFunctionEaseOut//淡出,匀速,然后缓慢减速移除
kCAMediaTimingFunctionEaseInEaseOut//淡入淡出,结合以上两者
kCAMediaTimingFunctionDefault//默认效果
delegate,代理。设置代理以后就会执行代理方法啦。
-(void)animationDidStart:(CAAnimation *)anim;
-(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag;
一个是动画开始的代理,一个是动画结束的代理。
值得注意的是,结束代理中,有一个flag。他的意思是如果动画正常播放完成的话,flag为YES。如果没有播放完成或者被移除则返回NO。
removedOnCompletion,是否在播放完成后移除。这是一个非常重要的属性,有的时候我们希望动画播放完成,但是保留最终的播放效果是,这个属性一定要改为NO,否则无效。
遵循着 CAMediaTiming 协议,所以他自然也有 duration、beginTime等一些属性。
beginTime
,动画的开始时间,准确的说应该叫滞后时间。就是当你将动画加载layer中后滞后多长时间开始播放。
/* The begin time of the object, in relation to its parent object, if
这个属性很重要,我想要着重讲一下。上面是beginTime属性的注释。从中我们能够看出,这个beginTime是与父对象
有关的。
由于CALayer和CAAnimation都遵循CAMediaTiming协议,所以那他都可以作为我们animation对象的父对象
duration,是动画的持续时间。简单的概念我就一笔带过了吧,同样的还有repeatCount,autoreverses (自动逆转)。这些都是一些基本属性,基本看单词就知道用途了。
speed,这个我也要说一下,他表示的是当前对象的时间流速。简单来说,如果speed是2,duration是3,那么经过1.5秒,我的动画已经播放完成了。s = v * t,s就相当于已经播放的动画,也就是长度为3个单位的动画,v相当于每秒播放多少动画,即每秒播放两个单位的动画,所以1.5秒后动画其实就播放完成了。
网友评论