#import "ViewController.h"
@interface ViewController ()
/**
* 要动画的view
*/
@property (nonatomic,weak)UIImageView * animateImageView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
/**
首先CAAnimationGroup也是继承自CAAnimation的 ,CAAnimationGroup你可以看到,他自己就一个属性
@property(nullable, copy) NSArray<CAAnimation *> *animations;
这个属性 是数组,元素只能是CAAnimation类或者其子类,
组动画是很简单的动画,他只是把其他的动画组合起来。
我们先创建一个view 来展示动画
*/
UIImageView * imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"haveReportStatus"]];
CGFloat imageWH = 33;
imageView.frame = CGRectMake(100, 100, imageWH, imageWH);
imageView.alpha = 0.0;
_animateImageView = imageView;
[self.view addSubview:imageView];
}
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
//动画
//位移动画
CABasicAnimation *anim1 = [CABasicAnimation animation];
anim1.keyPath = @"position.x";
anim1.fromValue = @(CGRectGetMidX(self.animateImageView.frame)+200);
anim1.toValue = @(CGRectGetMidX(self.animateImageView.frame));
//透明度
CABasicAnimation *anim2 = [CABasicAnimation animation];
anim2.keyPath = @"opacity";
anim2.fromValue = @(0);
anim2.toValue = @(1);
//旋转
CAKeyframeAnimation *anim3 = [CAKeyframeAnimation animation];
anim3.keyPath = @"transform.rotation.z";
anim3.values = @[@(0),@(M_PI_2*4)];
//缩放
CABasicAnimation * anim4 = [CABasicAnimation animation];
anim4.keyPath = @"transform.scale";
anim4.fromValue = @(0.3);
anim4.toValue = @(1);
//组动画
//这个方法是调用CAAnimation的方法来创建组动画的
CAAnimationGroup *groupAnim = [CAAnimationGroup animation];
//组动画的数组,把这些动画放到一个数组里面,这些动画可以是基础动画,可以是帧动画,
groupAnim.animations = @[anim1,anim2,anim3,anim4];
groupAnim.duration = 3;
groupAnim.removedOnCompletion = NO;
[self.animateImageView.layer addAnimation:groupAnim forKey:nil];
self.animateImageView.alpha = 1;
}
@end