UIKit / Appkit
|
Core Animation
|
OpenGL ES/OpenGL Core Graphics
|
Graphics Hardware
越上层,封装程度越高,动画实现越简洁越简单,但是自由度越低;反之亦然。
CALayer 长跑运动员
CAAnimation 长跑的路线 如何跑 跑的方向 位置
AddAnimation 开始长跑
CALayer
CALayer是个与UIView很类似的概念,同样有layer,sublayer...,同样有backgroundColor、frame等相似的属性,我们可以将UIView看做一种特殊的CALayer,只不过UIView可以响应事件而已
layer可以有两种用途
一是对view相关属性的设置,包括圆角、阴影、边框等参数
二是实现对view的动画操控。因此对一个view进行core animation动画,本质上是对该view的.layer进行动画操纵。
CAAnimation
CABasicAnimation
通过设定起始点,终点,时间,动画会沿着你这设定点进行移动。可以看做特殊的CAKeyFrameAnimation
CAKeyframeAnimation
Keyframe顾名思义就是关键点的frame,你可以通过设定CALayer的始点、中间关键点、终点的frame,时间,动画会沿你设定的轨迹进行移动
CAAnimationGroup
Group也就是组合的意思,就是把对这个Layer的所有动画都组合起来。PS:一个layer设定了很多动画,他们都会同时执行,如何按顺序执行我到时候再讲。
CATransition
这个就是苹果帮开发者封装好的一些动画
CABasicAnimation *ani = [CABasicAnimationanimationWithKeyPath:@"transform.scale"];
//把小数转换成对象
ani.fromValue = [NSNumbernumberWithFloat:1.0];
ani.toValue = [NSNumbernumberWithFloat:2.0];
//动画时长
ani.duration = 2.0f;
//自动还原
ani.autoreverses = YES;
//添加到View的layer上
[image.layer addAnimation:ani forKey:@"scale"];