在while循环中更新UIView的背景颜色

时间:2017-01-19 21:48:30

标签: ios swift uiview swift3

我想在while循环中更改UIView的颜色。我从主线程中调用start()

示例:

func start() {

    let item = Percolation(n: self.tileSideCount)

    while (!item.percolates()) {
        let v = Int(arc4random_uniform(UInt32(self.tileSideCount))) + 1
        let j = Int(arc4random_uniform(UInt32(self.tileSideCount))) + 1

        UIView.animate(withDuration: 0.3, delay: 0.0, options: [], animations: {
            self.container?.viewWithTag(v)?.backgroundColor = UIColor.white
            self.container?.viewWithTag(j)?.backgroundColor = UIColor.white
        }, completion: { (finished: Bool) in

        })

        if (!item.isOpen(i: v, j: j)) {
            item.open(i: v, j: j);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

如果您希望颜色按顺序从一个变为另一个,则需要提交具有延迟和持续时间值的动画调用,以便在下一个动画开始时完成上一个动画。

假设每个动画的持续时间为1秒。使第一个以延迟0开始,第二个动画以1秒的延迟开始,等等。

(同样适用于其他持续时间。如果您的持续时间为.3秒,则每个后续动画的开始时间比前一个时间晚0.3秒。)