进度视图的无限步骤?
Infinite step for progress view?
我需要在任意进程发生时在屏幕上为用户提供状态。我无法知道需要多长时间。我怎样才能永远增加 progressView
(它会在接近 1 时变慢)。
一个可能的解决方案是将它递增一半的距离到终点。因此,第一次进度视图为 0 时,您将 1 减去它走了多远 (0),然后将其除以 2。所以 (1-0)/2 = .5
。下一次是 (1-.5)/2 = .25
所以你会添加 .25 并得到 .75 这会起作用,虽然可能不是理想的解决方案,因为第一次它会很快并且用户会认为任务已经完成了一半,但实际上第一部分已完成,进度视图将显着变慢
我认为您需要 post 多了解一下任意过程,但无限进度视图通常是一个旋转的圆圈或一些向用户表明它没有被冻结的连续运动。您可以在视图中包含一个标签,您可以用正在发生的事情的文本更新该标签。
为了进行计算,您需要有总金额和当前金额值。因此,例如在循环中,您可以执行以下操作:
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
如果你愿意更换进度视图,This将是你最好的朋友!它拥有你想要的一切。
我需要在任意进程发生时在屏幕上为用户提供状态。我无法知道需要多长时间。我怎样才能永远增加 progressView
(它会在接近 1 时变慢)。
一个可能的解决方案是将它递增一半的距离到终点。因此,第一次进度视图为 0 时,您将 1 减去它走了多远 (0),然后将其除以 2。所以 (1-0)/2 = .5
。下一次是 (1-.5)/2 = .25
所以你会添加 .25 并得到 .75 这会起作用,虽然可能不是理想的解决方案,因为第一次它会很快并且用户会认为任务已经完成了一半,但实际上第一部分已完成,进度视图将显着变慢
我认为您需要 post 多了解一下任意过程,但无限进度视图通常是一个旋转的圆圈或一些向用户表明它没有被冻结的连续运动。您可以在视图中包含一个标签,您可以用正在发生的事情的文本更新该标签。
为了进行计算,您需要有总金额和当前金额值。因此,例如在循环中,您可以执行以下操作:
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
This将是你最好的朋友!它拥有你想要的一切。