我有兴趣为视图做类似动画的抖动,类似于中描述的内容
ios-icon-jiggle-algorithm和error-in-button-jiggle-algorithm
然而,这些解决方案实现了时不变动画,这意味着动画序列在动画开始之前是固定的,并且一遍又一遍地执行完全相同的动画。在这些情况下,旋转角度是预先计算的。
我想做的是时变动画,其中动画随时间变化。在前面的示例中,我希望旋转角度根据一些基于时间的函数而变化。
打个比方,想象一下我正在为一块果冻制作动画。在动画开始时,我敲击果冻一次,它开始摇晃,然后随着时间的推移,摇晃的大小逐渐减小,直到它完全不摇晃。
据我了解,我无法将随时间变化的值注入到动画块中,我认为唯一可行的做法是按照ios-multiple-animation-blocks将固定动画字符串链接在一起。将 3 或 4 个递减动画值串在一起,我应该会得到一个可以接受的效果。
那么,如果有办法用 UIView Animations 做我想做的事呢?还是我应该采用另一种方法?
[编辑]
为了更清楚我所说的时变的含义,我希望能够将动画属性的值指定为函数时间,而不必先验地预先计算动画属性。并且以一种(可能)允许我即时修改功能的方式这样做。作为一个具体的例子,我可能想要一个函数 f(t) :
For t<0 f(t) = 0
For t>0 and t<1 f(t) = 1-t
For t>1 f(t)= 0
实际上,更好的 af(t) 表示形式如下:
f(t) = A(t)sin(t)
[编辑#2]
经过一番考虑,我决定,虽然理想情况下能够指定随时间变化的视图动画是我想要做的效果,但实际上,当它应用在应用程序中时,用户可能不会注意到我的编程能力。所以我只是要伪造它并使用预先计算并多次触发的关键帧动画。