图层的核心动画(CABaseAnimation)
Main.storyboard
//
// ViewController.m
// 7A14.图层的核心动画
//
// Created by huan on 16/2/4.
// Copyright © 2016年 huanxi. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
//设置根层的大小
// self.imageView.layer.bounds = CGRectMake(0, 0, 150, 150);
//想要在根层执行动画,使用核心动画
//1.创建一个核心动画对象
CABasicAnimation *animation = [CABasicAnimation animation];
#warning 核心动画,只是一个假象,真实的大小是没有变化
/*
* 解决方案1:如果想控制的大小真实改变,要在动画结束设置控制的尺寸
* 解决方案2:使动画保存执行之后的状态,默认动画执行完后,会返回原来的状态
*/
//设置图形的属性来决定动画类型
//bounds 图层尺寸动画
animation.keyPath = @"bounds";
//设置bounds尺寸变化后的大小
animation.toValue = [NSValue valueWithCGRect:CGRectMake(0, 0, 150, 150)];
//解决方案1:动画的代理
//动画的代理
animation.delegate = self;
//解决方案2:使动画保存之后的状态,只要设置动画的两个属性
// animation.removedOnCompletion = NO; //动画对象不要移除
// animation.fillMode = kCAFillModeForwards;//保存当前的状态
//2.往控件的图层添加动画
[self.imageView.layer addAnimation:animation forKey:nil];
}
-(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{
self.imageView.bounds = CGRectMake(0, 0, 150, 150);
}
@end
结果