CALayer动画
CAPropertyAnimation 抽象类
一般使用下面这两个方法进行实现动画
CABasicAnimation 基础的动画 更改大小 旋转 等
CAKeyframeAnimation 主要按轨迹移动 更改位置 比如 执行一组动画时 使用 背景颜色
CABasicAnimation 基本步骤
1.创建一个基础动画
// 以旋转为例
// 参数 要实现动画的属性 keyPath
// 注意keyPath一定不要拼错
// 咱们要更改的根据加transform.rotation.x
// 形变属性下 弧度的X轴 根据X轴旋转
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.x"];
2 设置属性的变化 到什么值
// tovalue 需要一个对象类型 即NSNumber 或 NSValue
animation.toValue = [NSNumber numberWithFloat:0. 5];
3 设置动画时间 重复次数
animation.duration = 1;
animation.repeatDuration = 3;
4.把设置好的动画添加到layer上
// 参数2 添加到动画的标识
[self.MyView.layer addAnimation:animation forKey:@"transform.rotation.x"];
CAKeyframeAnimation 基本步骤
// 以晃动为例
1.创建动画
NSStringFromCGPoint(self.MyView.layer.position));
CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"position.x"];
2.变成对象
NSNumber *num1 = [NSNumber numberWithFloat:self.MyView.layer.position.x - 50];
NSNumber *num2 = [NSNumber numberWithFloat:self.MyView.layer.position.x ];
NSNumber *num3 = [NSNumber numberWithFloat:self.MyView.layer.position.x + 50];
NSNumber *num4 = [NSNumber numberWithFloat:self.MyView.layer.position.x ];
NSNumber *num5 = [NSNumber numberWithFloat:self.MyView.layer.position.x - 50];
3.赋值values 需要一个数组
animation.values = @[num1, num2, num3, num4, num5];
4.设置动画时间
animation.duration = 0.5;
animation.repeatCount = 4;
5.添加动画
[self.MyView.layer addAnimation:animation forKey:@"position"];
};