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