使用CAValueFunction和动画键路径的CABasicAnimation,却得到了不同的结果。我只是好奇

时间:2019-06-19 07:22:21

标签: ios cabasicanimation ios-animations

  • 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,但是只有第一种方法可以正常工作,而第二种只能完成组中的最后一个动画。

0 个答案:

没有答案