CAAnimationGroup
动画组,是CAAnimation的子类,可以保存一组动画对象,将CAAnimationGroup对象加入层后,组中所有动画对象可以同时并发运行
属性说明:
- animations:用来保存一组动画对象的NSArray
- 默认情况下,一组动画对象是同时运行的,也可以通过设置动画对象的beginTime属性来更改动画的开始时间
示例演示
点击屏幕同时平移、缩放、旋转
- 核心代码 ViewController.m
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIView *redView;
@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
{
//同时缩放,平移,旋转
CAAnimationGroup * group = [CAAnimationGroup animation];
CABasicAnimation * rotation = [CABasicAnimation animation];
rotation.keyPath = @"transform.rotation";
rotation.toValue = @(arc4random_uniform(M_PI));
CABasicAnimation * scale = [CABasicAnimation animation];
scale.keyPath = @"transform.scale";
scale.toValue =@ 0.5;
CABasicAnimation * position = [CABasicAnimation animation];
position.keyPath = @"position";
position.toValue = [NSValue valueWithCGPoint:CGPointMake(arc4random_uniform(200), arc4random_uniform(200))];
group.animations = @[rotation,scale,position];
//取消动画反弹
group.removedOnCompletion = NO;
//设置动画执行完成后保持最新的效果
group.fillMode = kCAFillModeForwards;
[_redView.layer addAnimation:group forKey:nil];
}
@end