【问题标题】:how can I chain and group Core Animations for different objects?如何为不同的对象链接和分组核心动画?
【发布时间】:2012-01-28 00:52:15
【问题描述】:

假设我有 3 个 CALayers(例如,不同颜色的正方形)。 我想执行以下动画:

layer1 同时从位置 A 平移和缩放到位置 B。

一旦 layer1 处于其新位置并具有新的大小,layer2 和 3 就会同时分别从位置 C 和 D 转换到位置 E 和 F。这些层(2 和 3)在转换为 E 和 F 时也会淡入。但是 layer2 也会随着它的平移而缩放,而 layer3 只是平移(但是使用 CAKeyframeAnimation 以便当它到达 F 点时它会产生一点有弹性的上下效果)。

  1. 对于第 1 层,我可以:

    • 创建一个 CABasicAnimation,其唯一设置的持续时间设置为, 说 1,并将其添加到 layer1 以创建一个翻译的关键“转换”
    • 缩放变换并将其应用于图层
  2. layer2 与 layer1 相同,但也设置不透明度。

  3. 对于 layer3,我会创建一个关键帧动画。并设置不透明度。

从上面:

似乎调用 layer2 setTransform: 后跟 setOpacity: 会导致同时出现动画。但这是确保它们同时进行的正确方法还是我应该使用 CAAnimationGroup 之类的方法?

通过连接矩阵进行平移和缩放是否有意义?使用矩阵而不是设置位置是否有意义?

如何链接这些,以便 layer2 和 layer3 的动画在 layer1 完成之前不会开始,然后 layer2 的变换和不透明度与 layer3 的关键帧和不透明度动画同时发生?

【问题讨论】:

    标签: ios core-animation calayer


    【解决方案1】:

    我今天做了一些非常相似的事情。我正在混合 CGAffineTransform 和 CABasicAnimations,它导致了最尴尬的错误。无论如何。

    设置动画以在完成后执行一个方法我很确定我在使用:

    [self performSelector:@selector(animationDone) withObject:nil afterDelay:0.0];
    

    在我使用一种方法完成 3 个 CABasicAnimations 后,CAAnimationGroup 会一次调用所有 3 个。在第一个动画组完成后,它会调用 animationDone 方法来启动后续动画的下一个方法。

    还得小心点:

    animationObject.fillMode = kCAFillModeForwards; //b/c of object's coordinate changes
    animationObject.removedOnCompletion = NO;
    

    【讨论】:

      猜你喜欢
      • 2012-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多