是否可以控制 CAAnimation 的时间线?
Posted
技术标签:
【中文标题】是否可以控制 CAAnimation 的时间线?【英文标题】:Is it possible to control a CAAnimation's timeline? 【发布时间】:2011-10-25 06:59:41 【问题描述】:我有一个复杂的动画,它通常单独运行,由某个CAMediaTimingFunction
驱动。这很好用。
现在,我想使用外部值控制同一动画的时间(线),例如来自滑块或手势识别器。换句话说,我不想让“时钟”驱动时间轴,而是一个滑块,因此可以用它来回滑动并通过将滑块设置为某个值来“冻结”动画。
这可能吗?如果有,怎么做?
【问题讨论】:
【参考方案1】:这是可能的(而且非常简单),但我只是将其作为一个实验进行了尝试(对于由捏合手势识别器驱动的复杂动画),所以我很想知道这个解决方案是否足够:
您需要将动画的速度设置为 0,并将时间偏移设置为您要跳转到的时间点,例如
CABasicAnimation* animation = [CABasicAnimation ...];
animation.speed = 0;
animation.duration = 1;
animation.timeOffset = 0.5;
将使动画跳转到半秒后的位置。
现在,您无法在 CAAnimation 对象添加到图层后对其进行操作,因此您需要在每次偏移更改时添加新动画(并删除旧动画,不要忘记;) .
【讨论】:
以上是关于是否可以控制 CAAnimation 的时间线?的主要内容,如果未能解决你的问题,请参考以下文章