Warum ist -animateWithDuration: delay: Optionen: Animationen: completion: Blockierung der UI?

7

Ich dachte immer, dass Core Animation Animationen im Hintergrund ausführt. Wenn ich diesen Code ausführe, sind meine UI-Interaktionen blockiert, bis die Animation beendet ist:

%Vor%

Wie Sie sehen können, ist die Dauer lang, sodass deutlich zu sehen ist, dass die UI-Interaktionen während der Animation blockiert sind.

Die UI-Interaktion wird blockiert, wenn die Animation beginnt und endet, wenn die Animation beendet ist.

Gibt es eine Möglichkeit, eine UIView-Animation gleichzeitig zu starten, damit die UI-Interaktionen nicht blockiert werden?

BEARBEITEN, um zu verdeutlichen: Ich weiß, dass die Benutzeroberfläche blockiert ist, weil ich nicht mit jedem Steuerelement auf dem Bildschirm interagieren kann, warum diese Animation ausgeführt wird. Diese anderen Steuerelemente haben nichts mit dem zu tun, was animiert wird, und sie befinden sich nicht in derselben Verzweigung in der Ansichtshierarchie. Die gesamte Benutzeroberfläche ist blockiert, wenn diese Animation ausgeführt wird. Wenn ich es auf 10 Sekunden einstelle, wird die Benutzeroberfläche für 10 Sekunden blockiert, während die Animation läuft. Getestet mit iOS 4.2 auf iPhone 4.

    
Proud Member 01.04.2012, 19:10
quelle

2 Antworten

18

Wenn ich mir die Dokumentation von UIView anschaue, habe ich das im Diskussionsabschnitt für diese Methode gefunden:

  

Während einer Animation werden Benutzerinteraktionen für die animierten Ansichten vorübergehend deaktiviert. (Vor iOS 5 sind Benutzerinteraktionen für die gesamte Anwendung deaktiviert.) Wenn Sie möchten, dass Benutzer mit den Ansichten interagieren können, fügen Sie die UIViewAnimationOptionAllowUserInteraction-Konstante in den Optionen ein.

Wenn Sie möchten, dass die Benutzerinteraktion weiterhin erlaubt ist, müssen Sie diese Konstante im options-Parameter festlegen.

    
jmstone617 01.04.2012, 19:23
quelle
5

Dokumentation ist dein Freund:)

UIView Klassenreferenz

Unter animateWithDuration: Animationen:

"Während einer Animation werden Benutzerinteraktionen für die animierten Ansichten vorübergehend deaktiviert. (Vor iOS 5 sind Benutzerinteraktionen für die gesamte Anwendung deaktiviert.)"

Und natürlich für alle Ansichten unter der animierten Ansicht.

    
Rok Jarc 01.04.2012 19:22
quelle