CABasicAnimation循环,但每次都会变为不同的值?

时间:2017-11-07 17:04:34

标签: ios cabasicanimation

想象一下你有一个

anime.repeatCount = Float.greatestFiniteMagnitude

它正在为值之间的某些东西提供动画。

2  9  2  9  2  9  2  9  2  9  2  9 etc

但你想要的是

2  9  3  7  3  8  1  9  3  8  1  7 etc

所以 - 每次将.fromValue.toValue更改为稍微随机的值。

事实上,如果您每次都更改from和to值......

实际上你必须放弃动画并开始一个新的吗?

(因此,您使用setCompletionBlock并执行此操作。)

或者,你可以将它设置为永久循环,但是,每次都改变目标吗?有办法吗?

1 个答案:

答案 0 :(得分:1)

动画对象在添加到图层后会被复制,因此在此之后对其进行的任何修改都不会传播到渲染树。请参阅documentation for add(_:forKey:)

换句话说,一旦将动画添加到图层中,您就无法修改动画。相反,你会删除它并添加一个新的动画。

有一些"技巧"这可能使它看起来像一系列随机值 - 例如关键帧动画或具有不同持续时间的多个加法动画 - 但它们都没有实现无限随机值的实际动画。

为了实现这一点,一旦前一个动画无限期地完成,你最好添加一个新动画。