2016-06-16 17 views
0

Ich muss einen Status auf dem Bildschirm für den Benutzer bereitstellen, während ein beliebiger Prozess stattfindet. Ich weiß nicht, wie lange es dauern wird. Wie kann ich die progressView für immer inkrementieren (es wird langsamer, wenn es sich 1 nähert).Unendlich Schritt für Fortschrittsanzeige?

Antwort

0

Eine mögliche Lösung besteht darin, die halbe Distanz bis zum Ende zu erhöhen. Wenn also die Fortschrittsanzeige zum ersten Mal auf 0 steht, nimmst du 1 minus wie weit es gegangen ist (0) und dividiere das mit 2. Also (1-0)/2 = .5. Das nächste Mal wäre (1-.5)/2 = .25, also würden Sie 0,25 hinzufügen und 0,75 bekommen. Das wird funktionieren, obwohl es wahrscheinlich nicht die wünschenswerte Lösung ist, da das erste Mal ziemlich schnell gehen wird und die Benutzer annehmen, dass die Aufgabe halbwegs erledigt ist, wenn wirklich der erste Teil ist fertig und die Fortschrittsansicht wird erheblich verlangsamen

0

Ich denke, Sie müssen ein wenig mehr über den willkürlichen Prozess, aber in der Regel eine unendliche Fortschrittsansicht wäre ein rotierender Kreis oder etwas der kontinuierlichen Bewegung, die den Benutzer zeigt, dass es nicht eingefroren ist . Sie können eine Beschriftung in die Ansicht einfügen, die Sie mit Text aktualisieren können.

Um eine Berechnung durchzuführen, müssen Sie einen Gesamt- und einen aktuellen Betragswert haben. So zum Beispiel in einer Schleife könnte man so etwas tun:

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" 

Wenn Sie die Dauer der Animation verlangsamen müssen erhöhen die Animation nur statt i

1

This wird Ihr bester Freund sein, wenn Sie bereit sind, um die Fortschrittsansicht zu ersetzen! Es hat alles was du willst.

Verwandte Themen