我试图多次为我的视图背景设置动画。例如(当然它需要是动态解决方案)持续4秒,每秒它将从白色到黑色动画。我们的期望: 第二:
我尝试使用for甚至延迟(调度延迟),它只会运行一次 而不是停止。这是我试过的。
for var index = 0; index < 3; ++index {
UIView.animateWithDuration(0.33333, delay: 0.333333, options: UIViewAnimationOptions.CurveEaseIn, animations: { () -> Void in
println(elapsedTime)
self.view.backgroundColor = UIColor.blackColor()
}) { (completed : (Bool)) -> Void in
UIView.animateWithDuration(0.333333, animations: { () -> Void in
self.view.backgroundColor = UIColor.whiteColor()
})
}
}
关于如何运行这些命令的任何建议,等到它们完成并再次运行它们?
答案 0 :(得分:1)
使用for
循环,您基本上设置了所有四个动画,以便同时运行。如果您将该动画代码设为函数,则可以从白色动画的完成块中递归调用它:
func animateBackground(times: Int) {
if times == 0 { return }
let blackAnimation = { self.view.backgroundColor = UIColor.blackColor() }
let whiteAnimation = { self.view.backgroundColor = UIColor.whiteColor() }
UIView.animateWithDuration(0.33333, delay: 0.333333, options: UIViewAnimationOptions.CurveEaseIn, animations: blackAnimation) {
completedBlack in // completion block 1
UIView.animateWithDuration(0.333333, animations: whiteAnimation) {
completedWhite in // completion block 2
self.animateBackground(times - 1)
}
}
}
初始调用如下:
animateBackground(4)