代码如下:
#import "ViewController.h"
@interface ViewController ()
@property (nonatomic, strong)CALayer *JFlayer;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
CALayer *layer = [CALayer layer];
layer.position = CGPointMake(100, 150);
layer.bounds = CGRectMake(0, 0, 100, 100);
layer.backgroundColor = [UIColor redColor].CGColor;
[self.view.layer addSublayer:layer];
self.JFlayer = layer;
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
//[self testTransLate];
//[self zoom];
//[self rotate3D];
[self revolution_plane];
}
//
-(void)testTransLate{
// 1.创建动画对象
CABasicAnimation *animation = [CABasicAnimation animation];
// 2.设置动画对象
// keyPath决定了执行怎样的动画, 调整哪个属性来执行动画
// anim.keyPath = @"transform.rotation";
// anim.keyPath = @"transform.scale.x";
animation.keyPath = @"position";
animation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, 0)];
animation.toValue = [NSValue valueWithCGPoint:CGPointMake(200, 300)];
animation.duration = 2.0;
//动画删除完毕后不要删除动画
animation.removedOnCompletion = NO;
//保持最新状态
animation.fillMode = kCAFillModeForwards;
// 3.添加动画
[self.JFlayer addAnimation:animation forKey:nil];
}
//平移缩放
-(void)zoom{
// 1.创建动画对象
CABasicAnimation *animation = [CABasicAnimation animation];
// 2.设置动画对象
// keyPath决定了执行怎样的动画, 调整哪个属性来执行动画
// anim.keyPath = @"transform.rotation";
// anim.keyPath = @"transform.scale.x";
animation.keyPath = @"bounds";
// animation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, 0)];
animation.toValue = [NSValue valueWithCGRect:CGRectMake(50, 0, 200, 300)];
animation.duration = 2.0;
//动画删除完毕后不要删除动画
animation.removedOnCompletion = NO;
//保持最新状态
animation.fillMode = kCAFillModeForwards;
// 3.添加动画
[self.JFlayer addAnimation:animation forKey:nil];
}
//3D旋转
-(void)rotate3D{
// 1.创建动画对象
CABasicAnimation *animation = [CABasicAnimation animation];
// 2.设置动画对象
// keyPath决定了执行怎样的动画, 调整哪个属性来执行动画
// anim.keyPath = @"transform.rotation";
// anim.keyPath = @"transform.scale.x";
animation.keyPath = @"transform";
// animation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, 0)];
animation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI, -1, -1, 0)];
animation.duration = 2.0;
//动画删除完毕后不要删除动画
animation.removedOnCompletion = NO;
//保持最新状态
animation.fillMode = kCAFillModeForwards;
// 3.添加动画
[self.JFlayer addAnimation:animation forKey:nil];
}
// keyPath决定了执行怎样的动画, 调整哪个属性来执行动画
-(void)revolution_plane{
// 1.创建动画对象
CABasicAnimation *animation = [CABasicAnimation animation];
// 2.设置动画对象
// keyPath决定了执行怎样的动画, 调整哪个属性来执行动画
// anim.keyPath = @"transform.rotation";
// anim.keyPath = @"transform.scale.x";
animation.keyPath = @"transform.rotation";
// animation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, 0)];
// animation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI, -1, -1, 0)];
//增加到什么值
//animation.toValue = @(2);
//递增多少值
animation.byValue = @(2);
animation.duration = 0.5;
//动画删除完毕后不要删除动画
animation.removedOnCompletion = NO;
//保持最新状态
animation.fillMode = kCAFillModeForwards;
// 3.添加动画
[self.JFlayer addAnimation:animation forKey:nil];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end