在 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 的背景颜色的主要内容,如果未能解决你的问题,请参考以下文章