[CAAnimation核心動畫練習一]普通的平移,旋轉,縮放
阿新 • • 發佈:2019-02-01
三個動畫一起疊加效果,這個挺好。#import "ViewController.h" @interface ViewController () { @private CALayer* _calyer; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.img1.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); self.img2.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); [self.view addSubview:self.img1]; _calyer=[CALayer layer]; _calyer.backgroundColor=[UIColor brownColor].CGColor; _calyer.bounds=CGRectMake(0, 0, 150, 100); _calyer.position=CGPointMake(0, 0); _calyer.anchorPoint=CGPointZero; _calyer.cornerRadius=20; [self.view.layer addSublayer:_calyer]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { //平移動畫 CABasicAnimation* caBasePosition = [CABasicAnimation animation]; caBasePosition.duration = 2; caBasePosition.keyPath = @"position"; caBasePosition.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, 0)]; caBasePosition.toValue = [NSValue valueWithCGPoint:CGPointMake(0, 300)]; caBasePosition.removedOnCompletion = NO; caBasePosition.fillMode = kCAFillModeForwards; [_calyer addAnimation:caBasePosition forKey:nil]; //縮放動畫 CABasicAnimation* caBaseBounds = [CABasicAnimation animation]; caBaseBounds.duration = 2; caBaseBounds.keyPath = @"bounds"; caBaseBounds.removedOnCompletion = NO; caBaseBounds.fillMode = kCAFillModeForwards; caBaseBounds.fromValue = [NSValue valueWithCGRect:_calyer.frame];/*動畫完了也沒變啊~*/ caBaseBounds.toValue = [NSValue valueWithCGRect:CGRectMake(_calyer.frame.origin.x, _calyer.frame.origin.y, _calyer.frame.size.width / 2, _calyer.frame.size.height * 2)]; [_calyer addAnimation:caBaseBounds forKey:nil]; //旋轉動畫 CABasicAnimation* caBaseTransform = [CABasicAnimation animation]; caBaseTransform.duration = 2; caBaseTransform.keyPath = @"transform"; caBaseTransform.removedOnCompletion = NO; caBaseTransform.fillMode = kCAFillModeForwards; caBaseTransform.fromValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(0, 0, 0, 1)]; caBaseTransform.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(- M_PI / 2, 0, 0, 1)]; [_calyer addAnimation:caBaseTransform forKey:nil]; } @end
參考:http://www.cnblogs.com/wendingding/p/3801157.html