是否可以控制CAAnimation的时间表?

时间:2011-10-25 06:59:42

标签: ios macos animation core-animation caanimation

我有一个复杂的动画,它通常只由自己运行,由某个CAMediaTimingFunction驱动。这很好。

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

这可能吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:-1)

这是可能的(也很容易),但我只是尝试过这个实验(对于由捏手势识别器驱动的复杂动画),所以我很想知道这个解决方案是否足够:

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

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

会使动画跳到半秒后的状态。

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