#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