我有一个预定义的颜色序列及其持续时间(ms),我希望在子视图中按顺序显示(动画?)。在Android中,我可以使用带有AnimationDrawable的addFrame()来创建动画对象。在iOS中有类似的东西可以帮我吗? (总持续时间必须是各个颜色持续时间的总和。)谢谢!
答案 0 :(得分:1)
有多种方法可以做到这一点。一个例子:
+ UIView animateWithDuration:delay:options:animations:completion:
创建动画,其中延迟是累计持续时间,持续时间是此迭代的持续时间,并且在动画块中:backgroundColor
这种方法有局限性,因为你无法停止或暂停它。
或者,使用完成块来触发动画的下一步。现在您可以检查是否应该停止,并且不需要累积持续时间。
或者,使用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;
}
}];
}