【问题标题】:Updating UIView's background color in a while loop在 while 循环中更新 UIView 的背景颜色
【发布时间】:2017-01-19 21:48:30
【问题描述】:

我想在 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);
        }
    }
}

【问题讨论】:

  • self.container?.viewWithTag(v/j) 可能为零
  • 哪一部分不行?
  • 所以您将视图背景颜色随机更改为白色?

标签: ios swift uiview swift3


【解决方案1】:

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

假设每个动画的持续时间是 1 秒。让第一个动画以 0 的延迟开始,第二个动画以 1 秒的延迟开始,依此类推。

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

【讨论】:

    猜你喜欢
    • 2011-09-08
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    相关资源
    最近更新 更多