通过设定起始点,终点,时间,动画会沿着你这设定点进行移动。可以看做特殊的CAKeyFrameAnimation
Keyframe顾名思义就是关键点的frame,你可以通过设定CALayer的始点、中间关键点、终点的frame,时间,动画会沿你设定的轨迹进行移动
Group也就是组合的意思,就是把对这个Layer的所有动画都组合起来。PS:一个layer设定了很多动画,他们都会同时执行,如何按顺序执行我到时候再讲。
这个就是苹果帮开发者封装好的一些动画,
[self.button1 setImage:[UIImage imageNamed:(i%2==0?@"2":@"1")] forState:UIControlStateNormal];
self.image1.layer.contents = (id)[UIImage imageNamed:(i%2==0?@"2":@"1")].CGImage;
CAKeyframeAnimation *k = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale"];
k.values = @[@(1.0),@(1.5),@(2.0)];
k.keyTimes = @[@(0.0),@(0.5),@(0.8),@(1.0)];
k.calculationMode = kCAMediaTimingFunctionEaseInEaseOut;
i++;
[self.button1.layer addAnimation:k forKey:@"SHOW"];
[self.image1.layer addAnimation:k forKey:@"SHOW"];
//移动帧动画
UIView *redView=[[UIView alloc]initWithFrame:CGRectMake(10, 10, 20, 20)];
redView.backgroundColor=[UIColor redColor];
[self.view addSubview:redView];
CAKeyframeAnimation *ani=[CAKeyframeAnimation animation];
//初始化路径
CGMutablePathRef aPath=CGPathCreateMutable();
//动画起始点
CGPathMoveToPoint(aPath, nil, 20, 20);
CGPathAddCurveToPoint(aPath, nil,
160, 30,//控制点
220, 220,//控制点
240, 380);//控制点
ani.path=aPath;
ani.duration=10;
//设置为渐出
ani.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
//自动旋转方向
ani.rotationMode=@"auto";
[redView.layer addAnimation:ani forKey:@"position"];