分组动画
CAAnimationGroup:分组动画
分组动画的两个特有属性:
1、动画数组 animations
2、启动的时间 beginTime
注意:动画组 设置了动画的持续时间(duration)可能会导致 动画组里的动画持续时间不管用
初始化分组动画:
CAAnimationGroup *animationGroup = [CAAnimationGroup animation];
animationGroup.animations = @[[self rotation], [self dropAnimation]];
animationGroup.duration = 10;
// beginTime 动画开始的时间
// CACurrentMediaTime 获得当前的时间
// 从调用这个方法开始 5秒 之后 执行动画
animationGroup.beginTime = CACurrentMediaTime() + 5;
animationGroup.removedOnCompletion = NO;
animationGroup.fillMode = kCAFillModeBoth;
[layer addAnimation:animationGroup forKey:@"animationGroup"];
//选转动画
-(CABasicAnimation *)rotation{
CABasicAnimation *rotation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotation.toValue = @(M_PI_2*3);
rotation.removedOnCompletion = NO;
return rotation;
}
//掉落
-(CAKeyframeAnimation *)dropAnimation{
CAKeyframeAnimation *drop =[ CAKeyframeAnimation animationWithKeyPath:@"position"];
CGMutablePathRef ref = CGPathCreateMutable();
CGPathMoveToPoint(ref, NULL, layer.position.x, layer.position.y);
// CGPathAddCurveToPoint cp1x y cpx y 设置两个点 在这两个点之间画曲线
// x y 终止点
CGPoint endPoint = CGPointMake(50, 600);
CGPathAddCurveToPoint(ref, NULL, 160, 280, -30, 300, endPoint.x, endPoint.y);
// 设置掉落的路径
drop.path = ref;
CGPathRelease(ref);
return drop;
}