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

Posted

技术标签:

【中文标题】在 while 循环中更新 UIView 的背景颜色【英文标题】:Updating UIView's background color in a while loop 【发布时间】: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) 可能为零 哪一部分不行? 所以您将视图背景颜色随机更改为白色? 【参考方案1】:

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

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

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

【讨论】:

以上是关于在 while 循环中更新 UIView 的背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

iOS:从运行循环外部设置 UIView 背景颜色

UIView 背景颜色颜色循环

使用 VueJS 在 while 循环中更新数据

swift - 在UIScrollView上从xib添加UIView后如何更新约束?

如何在 while 循环内更新 api 调用?

如何在 React 的 while 循环中更新状态