// // KKViewController.m // KKCoreAnimation // // Created by SunKe on 13-11-6. // Copyright (c) 2013年 Coneboy_K. All rights reserved. // #import <QuartzCore/QuartzCore.h> #import "KKViewController.h" @interface KKViewController () @end @implementation KKViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } /* rotation.x 沿着x轴翻转 rotation.y 沿着y轴翻转 rotation.z 沿着z轴翻转 rotation 沿着z轴翻转 scale.x 沿着x轴缩放 scale.y 沿着y轴缩放 scale.z 沿着z轴缩放 scale 沿着x,y,z轴缩放 translation.x 在三维坐标系沿着x轴移动 translation.y 在三维坐标系沿着y轴移动 translation.z 在三维坐标系沿着z轴移动 translation 在三维坐标系沿着x,y轴移动 CABasicAnimation *scaoleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale.x"];通过对引号内的名字进行更改 从而改变layer的动画效果 */ - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [self moveLayerPosition]; [self moveLayerScaole]; [self moveLayerRotate]; [self moveLayer]; } - (void)moveLayerPosition { CALayer *kkLayer = [[CALayer alloc]init]; kkLayer.backgroundColor = [[UIColor blueColor]CGColor]; kkLayer.frame = CGRectMake(50, 65, 40, 40); 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]; animation.autoreverses = YES; animation.duration = 3; animation.repeatCount = NSNotFound; [kkLayer addAnimation:animation forKey:@"animationPosition"]; } - (void)moveLayerScaole { CALayer *kkLayer = [[CALayer alloc]init]; kkLayer.backgroundColor = [[UIColor greenColor]CGColor]; kkLayer.frame = CGRectMake(50, 131, 40, 40); kkLayer.cornerRadius = 5; [self.view.layer addSublayer:kkLayer]; // 对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; scaoleAnimation.repeatCount = NSNotFound; [kkLayer addAnimation:scaoleAnimation forKey:@"animationScaole"]; } - (void)moveLayerRotate { CALayer *kkLayer = [[CALayer alloc]init]; kkLayer.backgroundColor = [[UIColor grayColor]CGColor]; kkLayer.frame = CGRectMake(50, 217, 40, 40); kkLayer.cornerRadius = 5; [self.view.layer addSublayer:kkLayer]; // 以x轴进行旋转 CABasicAnimation *rotateAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.x"]; rotateAnimation.fromValue = [NSNumber numberWithFloat:0.0]; rotateAnimation.toValue = [NSNumber numberWithFloat:6.0 * M_PI]; rotateAnimation.duration = 3; rotateAnimation.repeatCount = NSNotFound; [kkLayer addAnimation:rotateAnimation forKey:@"animationRotate"]; } - (void)moveLayer { CALayer *kkLayer = [[CALayer alloc]init]; kkLayer.backgroundColor = [[UIColor redColor]CGColor]; kkLayer.frame = CGRectMake(50, 295, 40, 40); 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 *rotateAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.x"]; rotateAnimation.fromValue = [NSNumber numberWithFloat:0.0]; rotateAnimation.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 = [NSArray arrayWithObjects:animation,rotateAnimation, scaoleAnimation, nil]; group.repeatCount = NSNotFound; group.fillMode = kCAFillModeForwards; [kkLayer addAnimation:group forKey:@"kkLayerMove"]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end