animationWithKeyPath
使用animated keypaths,然后使用 animationGroup 并发动画 CAAnimationGroup * animationGroup = [CAAnimationGroup animation];
CABasicAnimation * translateX = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"];
translateX.toValue = @(300);
CABasicAnimation * translateY = [CABasicAnimation animationWithKeyPath:@"transform.translation.y"];
translateY.toValue = @(400);
animationGroup.duration = 4;
animationGroup.beginTime = CACurrentMediaTime() + 3;
animationGroup.removedOnCompletion = NO;
animationGroup.fillMode = kCAFillModeForwards;
[animationGroup setAnimations:@[translateX,translateY]];
[self.customView.layer addAnimation:animationGroup forKey:nil];
animationWithKeyPath
使用 CAValueFunction ,存在各种动画类型(例如平移,旋转,缩放等,我们可以方便地使用它),然后使用 animationGroup 并发动画 CAAnimationGroup * animationGroup = [CAAnimationGroup animation];
CABasicAnimation * translateX = [CABasicAnimation animationWithKeyPath:@"transform"];
translateX.valueFunction = [CAValueFunction functionWithName:kCAValueFunctionTranslateX];
translateX.toValue = @(300);
CABasicAnimation * translateY = [CABasicAnimation animationWithKeyPath:@"transform"];
translateY.valueFunction = [CAValueFunction functionWithName:kCAValueFunctionTranslateY];
translateY.toValue = @(400);
animationGroup.duration = 4;
animationGroup.beginTime = CACurrentMediaTime() + 3;
animationGroup.removedOnCompletion = NO;
animationGroup.fillMode = kCAFillModeForwards;
[animationGroup setAnimations:@[translateX,translateY]];
[self.customView.layer addAnimation:animationGroup forKey:nil];
我尝试了上述两种方法创建一个 animation ,该动画同时 translateY ,因此 translateY 我想知道
,预期的动画将是composition animation
,但是只有第一种方法可以正常工作,而第二种只能完成组中的最后一个动画。