我需要在屏幕上为用户提供状态,同时发生任意过程。我无从知道需要多长时间。如何永久地增加progressView
(当它接近1时它将减速)。
答案 0 :(得分:1)
This将成为您最好的朋友!它拥有你想要的一切。
答案 1 :(得分:0)
一种可能的解决方案是将距离增加一半到达终点。所以第一次进度视图为0时,你取1减去它走了多远(0)并将其除以2.所以(1-0)/2 = .5
。下一次将是(1-.5)/2 = .25
所以你会添加.25并获得.75这将起作用,虽然可能不是理想的解决方案,因为它第一次会很快进行,用户将认为任务已经中途完成了第一部分完成,进度视图将大大减慢
答案 2 :(得分:0)
我认为您需要发布更多关于任意过程的内容,但通常无限进度视图将是旋转圆或连续运动的某些内容,向用户显示其未被冻结。您可以在视图中包含一个标签,您可以使用正在发生的文本进行更新。
要进行计算,您需要拥有总金额和当前金额值。因此,例如在循环中,您可以执行以下操作:
var objects = [Object]()
progressView.label.text = "starting"
progressView.startAnimating()
var i = 0
for object in objects {
progressView.label.text = "processing \(i + 1) of \(objects.count)"
doProcess(object)
progressView.label.text = "processed \(i + 1) of \(objects.count)"
i = i + 1
}
progressView.label.text = "done"
如果你需要减慢动画速度,只需增加动画持续时间而不是i