gpt4 book ai didi

swift - 等到任务完成后再运行

转载 作者:行者123 更新时间:2023-11-28 07:15:03 25 4
gpt4 key购买 nike

我尝试多次为我的 View 背景制作动画。例如(当然它需要是动态解决方案)4秒,每一秒它都会从白色到黑色动画。我们期望:第二:

  1. 白到黑到白
  2. 白到黑到白
  3. 白到黑到白
  4. 白到黑到白

我尝试使用 for 甚至 delay(dispatch delay),它只会运行 1 次而不是停止。这就是我尝试过的。

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()
})
}
}

关于如何运行这些命令,等待它们完成然后再次运行它们有什么建议吗?

最佳答案

使用 for 循环,您实质上是将所有四个动画设置为同时运行。如果您将该动画代码设为函数,则可以从白色动画的完成 block 中递归调用它:

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)

关于swift - 等到任务完成后再运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26690011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com