可以保存一组动画对象,将CAAnimationGroup对象加入层后,组中所有动画对象可以同时并发运行
属性解析:
animations:用来保存一组动画对象的NSArray
默认情况下,一组动画对象是同时运行的,也可以通过设置动画对象的beginTime属性来更改动画的开始时间
#import "ViewController.h" @interface ViewController () @property(nonatomic,strong)UIButton *btn; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.btn=[UIButton buttonWithType:UIButtonTypeCustom]; self.btn.frame=CGRectMake(50, 100, 80, 60); [self.btn setTitle:@"按钮" forState:UIControlStateNormal]; [self.btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [self.btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:self.btn]; } -(void)btnClick:(id)sender { CABasicAnimation *a1 = [CABasicAnimation animation]; a1.keyPath = @"transform.translation.y"; a1.toValue = @(100); // 缩放动画 CABasicAnimation *a2 = [CABasicAnimation animation]; a2.keyPath = @"transform.scale"; a2.toValue = @(2.0); // 旋转动画 CABasicAnimation *a3 = [CABasicAnimation animation]; a3.keyPath = @"transform.rotation"; a3.toValue = @(-3.1415926/4); // 组动画 CAAnimationGroup *groupAnima = [CAAnimationGroup animation]; groupAnima.animations = @[a1, a2, a3]; //设置组动画的时间 groupAnima.duration = 2; groupAnima.fillMode = kCAFillModeForwards; groupAnima.removedOnCompletion = NO; [self.btn.layer addAnimation:groupAnima forKey:nil]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } @end
时间: 2024-10-06 16:30:07