Ios 动画太快了。Can';他似乎没有放慢脚步

Ios 动画太快了。Can';他似乎没有放慢脚步,ios,swift,Ios,Swift,我的动画太快了。我正在做一个模式匹配游戏,我有4个不同颜色的UIView。我想要一个闪烁,然后大约一秒钟后,有另一个UIView闪烁。视图通过我的标记标识符闪烁,我已经为每个视图(1,2,3,4)设置了不同的标记标识符。看起来他们是同时出发的。我已经尝试过调整animateWithDuration函数的值,但似乎没有帮助 这是我的打印输出,所以你可以看到它正在以正确的顺序执行 gary 3 gary 2 gary 2 gary 3 gary 2 func beginGame() {

我的动画太快了。我正在做一个模式匹配游戏,我有4个不同颜色的UIView。我想要一个闪烁,然后大约一秒钟后,有另一个UIView闪烁。视图通过我的标记标识符闪烁,我已经为每个视图(1,2,3,4)设置了不同的标记标识符。看起来他们是同时出发的。我已经尝试过调整animateWithDuration函数的值,但似乎没有帮助

这是我的打印输出,所以你可以看到它正在以正确的顺序执行

gary
3
gary
2
gary
2
gary
3
gary
2



func beginGame() {
    var level = 5

    for _ in 1...level {
        self.randomNumber = Int(arc4random_uniform(4)) + 1
        let originalColor:UIColor = self.view.viewWithTag(randomNumber)!.backgroundColor!
        UIView.animateWithDuration(1, delay: 0, options: UIViewAnimationOptions.CurveEaseOut, animations: {


            self.view.viewWithTag(self.randomNumber)!.backgroundColor = UIColor.whiteColor()
              self.view.viewWithTag(self.randomNumber)!.backgroundColor = originalColor

            print("gary")


            }, completion: nil)
         print(randomNumber)

        enemyArray.append(randomNumber)

    }
}
//新代码

    func beginGame(){

    var level = 5

    for _ in 1...level {
        self.randomNumber = Int(arc4random_uniform(4)) + 1
        let originalColor:UIColor = self.view.viewWithTag(randomNumber)!.backgroundColor!
        UIView.animateWithDuration(1, delay: 4, options: UIViewAnimationOptions.CurveEaseOut, animations: {


            self.view.viewWithTag(self.randomNumber)!.backgroundColor = UIColor.whiteColor()
              self.view.viewWithTag(self.randomNumber)!.backgroundColor = originalColor

            print("gary")


            }, completion: nil)

         print(randomNumber)

        enemyArray.append(randomNumber)

    }




}

听听人们在告诉你什么。如果使用for循环并创建多个延迟值均为0的动画,则它们将同时运行。不要那样做

相反,请更像这样使用代码:

let pauseBetweenAnimations = 1.0
for step in 1...level {
  self.randomNumber = Int(arc4random_uniform(4)) + 1
  let originalColor:UIColor = 
    self.view.viewWithTag(randomNumber)!.backgroundColor!
  UIView.animateWithDuration(1, delay: (step - 1) * pauseBetweenAnimations, 
    options: UIViewAnimationOptions.CurveEaseOut, 
    animations:
    //the rest of your code goes here...

这将使每个后续动画在上一个动画后1秒开始。如果1秒太长,请更改pauseBetweenAnimations的值。

您是否尝试过增加animateWithDuration方法中的延迟,以便四个不同的动画不会同时启动?是的。这两个值我都玩过。你基本上是同时做所有的动画。for循环将所有动画排队,然后它们都同时运行。增加每一个的延迟,使其等待上一个完成。我增加了延迟。这会使一切都变慢,但正如你所说,它们似乎同时运行。你还将在更改的颜色生效之前重置每个视图的背景颜色。很抱歉,该代码也不起作用。它不喜欢第一步。你能给这个函数添加更多的内容吗?这样我就可以复制粘贴,看看它是否能正常工作?我过去也调整过延迟,但这也不起作用。您可能需要添加一个类型转换来将(步骤1)转换为Double。试试这个:`UIView.animateWithDuration(1,延迟:Double)(步骤-1)*Pausebetweenanimation我认为它喜欢Int不是以前尝试的两倍。step甚至有一个数值吗?延迟应该是一个双精度。根据您的代码,我假设step是一个Int。
级别的类型是什么?
?增加延迟不起作用。我仍然遇到同样的问题。这就是上面的代码所做的我已经试过了。