1. 程式人生 > >[CAAnimation核心動畫練習一]普通的平移,旋轉,縮放

[CAAnimation核心動畫練習一]普通的平移,旋轉,縮放

#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