Deaktivieren der Animation beim Ändern der Eigenschaften von Ebenen / Ansichten?

8

Ich habe eine Art Animation erstellt, indem ich mehrere Ebenen zu einer UIView hinzugefügt habe. Diese Ebenen sollen durch ein Skript sichtbar oder unsichtbar gesetzt werden.

Das Skript basiert auf Objekten, die ein Protokoll implementieren:

%Vor%

in einem Timer I Iterate durch die Schrittobjekte:

%Vor%

Ein Skriptobjekt ist dieses Objekt:

%Vor%

und schließlich implementiere ich das Protokoll in der Schicht:

%Vor%

Das Anwenden der Änderungen in dem Schritt führt zu einem Übergang.

Gibt es eine Möglichkeit, diesen Übergang zu deaktivieren? Ich verwende gerade keinen CoreAnimation-Aufruf, nur die Eigenschaften selbst (siehe Code).

    
Zuppa 14.04.2012, 17:16
quelle

2 Antworten

34

Wenn Sie eine der animierbaren Eigenschaften einer Ebene ändern, wird das erstellt, was Apples Dokumente als implizite Animation bezeichnet.

Um die Xcode-Dokumente zu diesem Thema zu zitieren:

  

Das implizite Animationsmodell von Core Animation geht davon aus, dass alle Änderungen an   animierbare Layer-Eigenschaften sollten schrittweise und asynchron sein.   Dynamisch animierte Szenen können ohne jemals explizit erreicht werden   Animieren von Ebenen Ändern des Werts einer animierbaren Layer-Eigenschaft   bewirkt, dass der Layer die Änderung implizit vom alten Wert animiert   auf den neuen Wert. Während eine Animation läuft, wird ein neues erstellt   Zielwert bewirkt, dass die Animation auf den neuen Zielwert übergeht   von seinem aktuellen Zustand.

Unter dem Deckblatt generiert das System eine CAAnimation, die die Änderung vornimmt.

Wie auf dem anderen Poster gesagt, können Sie setAnimationDuration verwenden, um die Animation in einem Augenblick zu aktivieren, was dazu führt, dass Animationen deaktiviert werden. Ich vermute, dass das System trotzdem eine Animation generiert.

Die offizielle Methode zur Deaktivierung von impliziten Ebenenanimationen ist die Verwendung von

%Vor%

Bearbeiten:

In Swift 3 würde dieser Code wie folgt aussehen:

%Vor%     
Duncan C 14.04.2012, 22:55
quelle
3

Kopieren Sie einfach den Code, an dem Sie die Änderung vornehmen.

%Vor%     
mprivat 14.04.2012 17:34
quelle