Frage

gibt es eine Möglichkeit, das animierte Spinnrad anzuzeigen, während der Haupt-Thread eine langwierige Operation tut? Die Animation wird von dem selben Thread behandelt, die die UIActivityIndicatorView, richtig angelegt? Wenn ja, können Ansichten, die mehrere Threads gehören sitzen in der gleichen Ansicht Hierarchie?

Unter sonst andernfalls, ich habe nichts dagegen eine langwierige Operation bewegt sich in einem Hintergrund-Thread, aber dann würde ich die UI einfrieren müssen irgendwie, während es läuft. Dass ich bin nicht sicher, wie das zu tun.

EDIT:. "Lange" ist ca. 2 sec auf einem erste Generation Gerät

War es hilfreich?

Lösung

Die Lösung ist die Animation mindestens eine Iteration durch die Laufschleife zu starten, bevor die langwierige Operation ausgeführt wird. Zum Beispiel:

[activity startAnimating];
[self performSelector:@selector(lengthyOperation) withObject:nil afterDelay:0];

Sie müssen nicht die performSelector Methode zu verwenden, nur eine Möglichkeit, das Verfahren einzustellen laufen später so die Aktivitätsanzeige hat eine Chance, Animieren zu starten, bevor Sie beschäftigt erhalten.

Andere Tipps

Die richtige Antwort ist auf jeden Fall den lengthly Betrieb auf einen Hintergrundthread zu bewegen und diese an den Haupt-Thread kommunizieren, wenn es fertig ist. Wenn Sie nicht wissen, wie Sie dies tun, lesen Sie weiter NSOperationQueue und NSInvocationOperation. Ihre Anwendung und Ihre Benutzer werden es Ihnen danken für die minimale Zeit nehmen, es zu lernen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top