// 初始化
CALayer *kkLayer = [[CALayer alloc] init];
kkLayer.backgroundColor = [[UIColor grayColor] CGColor];
kkLayer.frame = CGRectMake(10, 10, 40, 40);
// 设定它的frame
kkLayer.cornerRadius = 5;
[self.view.layer addSublayer:kkLayer];
// 移动kklayer的position
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"];
animation.fromValue = [NSValue valueWithCGPoint:kkLayer.position];
CGPoint toPoint = kkLayer.position;
toPoint.x += 180;
animation.toValue = [NSValue valueWithCGPoint:toPoint];
// 以x轴进行旋转
CABasicAnimation *retateAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.x"];
retateAnimation.fromValue = [NSNumber numberWithFloat:0.0];
retateAnimation.toValue = [NSNumber numberWithFloat:6.0 * M_PI];
//对kklayer进行放大缩小
CABasicAnimation *scaoleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale.x"];
scaoleAnimation.duration = 3;
scaoleAnimation.autoreverses = YES;
scaoleAnimation.fromValue = [NSNumber numberWithFloat:1.0];
scaoleAnimation.toValue = [NSNumber numberWithFloat:2.5];
scaoleAnimation.fillMode = kCAFillModeForwards;
// 把上面的动画组合起来
CAAnimationGroup *group = [CAAnimationGroup animation];
group.autoreverses = YES;
// 完成后反向完成
group.duration = 3.0;
group.animations = @[animation,retateAnimation,scaoleAnimation];
[kkLayer addAnimation:group forKey:@"kkLayerMove"];
// ps:动画结束以后,他会返回自己原来的frame,如果不想到原来frame我们需要设定
group.fillMode = kCAFillModeForwards;