我有一个复杂的动画,它通常单独运行,由某个CAMediaTimingFunction
. 这工作正常。
现在,我想使用外部值来控制同一动画的时间(线),例如来自滑块或手势识别器。换句话说,我不想让“时钟”驱动时间线,而是一个滑块,因此可以用它来回滑动并通过将滑块设置为某个值来“冻结”动画。
这可能吗?如果是这样,怎么做?
我有一个复杂的动画,它通常单独运行,由某个CAMediaTimingFunction
. 这工作正常。
现在,我想使用外部值来控制同一动画的时间(线),例如来自滑块或手势识别器。换句话说,我不想让“时钟”驱动时间线,而是一个滑块,因此可以用它来回滑动并通过将滑块设置为某个值来“冻结”动画。
这可能吗?如果是这样,怎么做?
这是可能的(而且很容易),但我只是将其作为一个实验进行了尝试(对于由捏合手势识别器驱动的复杂动画),所以我很想听听这个解决方案是否足够:
您需要将动画的速度设置为 0,并将时间偏移设置为要跳转到的时间点,例如
CABasicAnimation* animation = [CABasicAnimation ...];
animation.speed = 0;
animation.duration = 1;
animation.timeOffset = 0.5;
将使动画跳转到半秒后的位置。
现在,在将 CAAnimation 对象添加到图层后,您将无法对其进行操作,因此您需要在每次偏移量更改时添加新动画(并删除旧动画,不要忘记;)。