Wie wird die Animation für in einem UIView-Animationsblock verschachtelten Code deaktiviert?

7

Es gibt eine Methode, die innerhalb eines Animationsblocks von einer Drittanbieter-API aufgerufen wird. In dieser Methode soll ich einige Unteransichten erstellen. Aber in diesem Fall möchte ich beim Erstellen der Unteransichten keine Animation ausführen.

Gibt es eine Möglichkeit zu sagen "[UIView dontAnimateFromHere] ... [UIView nowYouMayAnimateAgain]"?

    
openfrog 25.09.2011, 23:03
quelle

2 Antworten

18

Ja, es gibt so einen Weg. Es ist so:

%Vor%

... dies deaktiviert sowohl UIView-Animationen, die durch Blöcke und Animationen ausgelöst werden, die mit den alten Methoden "Anfang / Ende" ausgelöst wurden.

Das heißt, ich gehe davon aus, dass Ihre Third-Party-Bibliothek vorkompiliert ist, sonst könnten Sie die Quelle direkt ändern: Es ist natürlich möglich, dass sie etwas seltsam und auf eine andere Art animiert, sodass Ihre Laufleistung mit dieser Lösung variieren kann.

Dadurch werden die Änderungen in den Animationsblöcken nicht deaktiviert: Sie werden sofort passieren. Andernfalls riskieren Sie, dass schlimme Dinge passieren, da die API Ihres Drittanbieters Annahmen darüber macht, wo Ansichten möglicherweise nicht wahr sind.

    
lxt 25.09.2011, 23:58
quelle
3

Für iOS 7 und höher gibt es diese UIViews + Durchführen ohneAnimation: .

Beachten Sie, dass performWithoutAnimation nützlich ist, um eine Änderung sofort auszuführen, während Sie sich in einem Animationsblock befinden. Animationsaufrufe, die innerhalb des verschachtelten Blocks vorgenommen werden, werden jedoch nicht deaktiviert. co_de% der ursprünglichen Antwort.

    
Chris Conover 28.04.2014 19:25
quelle

Tags und Links