我的iOS应用程序如何为一系列颜色制作动画?

时间:2014-03-04 20:28:55

标签: ios animation colors

我有一个预定义的颜色序列及其持续时间(ms),我希望在子视图中按顺序显示(动画?)。在Android中,我可以使用带有AnimationDrawable的addFrame()来创建动画对象。在iOS中有类似的东西可以帮我吗? (总持续时间必须是各个颜色持续时间的总和。)谢谢!

3 个答案:

答案 0 :(得分:1)

有多种方法可以做到这一点。一个例子:

  1. 循环你的颜色和持续时间,比如说它们是一组字典(不是必需的)
  2. 保持到目前为止的持续时间
  3. 在每次迭代中,使用+ UIView animateWithDuration:delay:options:animations:completion:创建动画,其中延迟是累计持续时间,持续时间是此迭代的持续时间,并且在动画块中:
  4. 动画块设置视图的backgroundColor
  5. 这种方法有局限性,因为你无法停止或暂停它。

    或者,使用完成块来触发动画的下一步。现在您可以检查是否应该停止,并且不需要累积持续时间。

    或者,使用CAPropertyAnimation键路径动画。现在,您可以在动画中的任何位置取消,并且您可以完全控制颜色之间的过渡速度和样式。

答案 1 :(得分:0)

最简单的方法是使用UIView对象,并将背景颜色设置为一定的持续时间。如果持续时间相同,则可以使用NSTimer重复触发,每次都将视图设置为新颜色。

答案 2 :(得分:0)

以下是使用完成处理程序的动画的简单示例。 _durations是表示颜色持续时间的NSNumber个对象数组。 _colors - UIColor个实例的数组。

- (void)animate
{
    [UIView
     animateWithDuration:[_durations[_currentColor] doubleValue]
     animations:^{
         self.view.backgroundColor = _colors[_currentColor++];
     }
     completion:^(BOOL finished) {
         if (_currentColor < _colors.count) {
             [self animate];
         }
         else {
             _currentColor = 0;
         }
     }];
}