Ich verwende also einen NSTimer, um den Benutzer wissen zu lassen, dass die App funktioniert. Der Fortschrittsbalken ist auf 3 Sekunden eingestellt, aber wenn er ausgeführt wird, wird er in einer 'tickenden' Bewegung angezeigt und es ist nicht so glatt wie es sein sollte. Gibt es trotzdem, ich kann es ruhiger machen - ich bin sicher nur ein Rechenfehler meinerseits ....
Wenn jemand einen Blick werfen könnte, wäre das großartig. Hier ist der Code:
%Vor% Wenn sich Ihr Balken gerade bewegt, um Aktivität anzuzeigen, sollten Sie möglicherweise eine UIActivityIndicatorView
oder eine benutzerdefinierte UIView-Animation verwenden:
Stellen Sie sicher, dass der Fortschritt Ihrer progressView zu Beginn auf Null gesetzt ist. Dies wird zu einer glatten 3 Sekunden Animation des Fortschritts führen.
Ссылка :
%Vor%Stellen Sie Ihren Timer auf ein kleineres Intervall ein:
%Vor%Aktualisieren Sie dann Ihre Funktion
%Vor%Was ist mit der richtigen Methode zum Animieren von Änderungen? animateWithDuration: Animationen: oder CABasicAnimation . Sie können damit glatte Animationen erstellen.
Es ist schwer zu sagen, was genau das Problem ist. Ich möchte die Ausgabe sehen, wenn Sie eine Druckzeile in setProgress setzen, um einen Zeitstempel zu drucken. Schiesst es tatsächlich jede Zehntelsekunde? Meine Vermutung ist, dass es nicht ist.
Warum nicht? Nun, der Timer plant einen Lauf-Loop-Task im Haupt-Thread, um den Code in setProgress auszuführen. Diese Aufgabe kann erst ausgeführt werden, wenn Aufgaben in der Warteschlange ausgeführt werden. Wenn also lange laufende Aufgaben in Ihrem Hauptthread stattfinden, wird Ihr Timer sehr ungenau ausgelöst. Mein erster Vorschlag ist, dass dies vielleicht passiert.
Hier ist ein Beispiel:
Wenn dies der Fall ist, müssen Sie das Hauptthread entweder in einen Hintergrundthread verschieben oder einen Weg finden, um das Problem zu lösen, während Sie regelmäßig zur Ausführungsschleife zurückkehren. Zum Beispiel können Sie während Ihrer lang laufenden Hauptthread-Operation regelmäßig runUntilDate in Ihrer Ausführungsschleife, damit andere Schleifenaufgaben ausgeführt werden können.
Beachten Sie, dass Sie die Füllung des Fortschrittsbalkens während des Haupttask-Tasks nicht ständig erhöhen konnten, da der Fortschrittsbalken seine Füllung erst dann tatsächlich animiert, wenn Sie zur Ausführungsschleife zurückkehren.
Tags und Links ios swift uiprogressview