【问题标题】:Is it possible to control a CAAnimation's timeline?是否可以控制 CAAnimation 的时间线?
【发布时间】:2011-10-25 06:59:41
【问题描述】:

我有一个复杂的动画,它通常单独运行,由某个CAMediaTimingFunction 驱动。这很好用。

现在,我想使用外部值控制同一动画的时间(线),例如来自滑块或手势识别器。换句话说,我不想让“时钟”驱动时间轴,而是一个滑块,因此可以用它来回滑动并通过将滑块设置为某个值来“冻结”动画。

这可能吗?如果有,怎么做?

【问题讨论】:

    标签: ios macos animation core-animation caanimation


    【解决方案1】:

    这是可能的(而且非常简单),但我只是将其作为一个实验进行了尝试(对于由捏合手势识别器驱动的复杂动画),所以我很想知道这个解决方案是否足够:

    您需要将动画的速度设置为 0,并将时间偏移设置为您要跳转到的时间点,例如

    CABasicAnimation* animation = [CABasicAnimation ...];
    animation.speed = 0;
    animation.duration = 1;
    animation.timeOffset = 0.5;
    

    将使动画跳转到半秒后的位置。

    现在,您无法在 CAAnimation 对象添加到图层后对其进行操作,因此您需要在每次偏移更改时添加新动画(并删除旧动画,不要忘记;) .

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-17
      • 1970-01-01
      • 1970-01-01
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多