Anhalten der CALayer-Animation mit einer Animation mit Verzögerung

8

Ich habe eine Reihe verschachtelter UIView -Animationen (2 oder 3 Ebenen tief zu einer bestimmten Zeit), die ich gerne pausieren und fortsetzen könnte. Einige dieser Animationen verwenden -animateWithDuration:animations:completion: , während andere -animateWithDuration:delay:options:animations:completion: verwenden, um die Ausführung des Animationsblocks zu verzögern.

Ich habe Technisches Q & amp; A QA1673 gelesen und implementiert, um alle Animationen anzuhalten eine Ebenenstruktur, aber ich habe ein Problem mit den Animationen, die einen Verzögerungsparameter verwenden. Ich kann Animationen zwar pausieren und fortsetzen, aber wenn die Animation fortgesetzt wird, scheint jeder Verzögerungsblock, um den es eine Verzögerung gibt, um die Zeit verlängert zu werden, um die der Ebenenbaum pausiert wurde. Wenn zum Beispiel einer der Blöcke eine Verzögerung von 1 Sekunde hat und der Ebenenbaum für 3 Sekunden pausiert wurde, verzögert sich die Animation nach dem Fortsetzen für 4 Sekunden. Ich vermute, das hat etwas mit der Eigenschaft beginTime zu tun? Jede Hilfe wäre willkommen.

%Vor%     
Sean 21.03.2012, 13:07
quelle

2 Antworten

0

Ich schlage einen anderen Ansatz vor.

Animationsblöcke sind einfach zu implementieren, aber nur nützlich, wenn Sie keine Kontrolle über Ihre Animation benötigen.

Andernfalls sollten Sie einen Timer verwenden und Ihre eigene Animation manuell erstellen.

%Vor%

isPaused ist ein Flag, das den Animationszustand steuert.

    
Beppe 29.03.2012 23:01
quelle
0

Ich habe die Lösung für das Problem gefunden! Sie müssen den Wert von self.layer.beginTime im Abschlussblock Ihrer Animationen auf Null zurücksetzen.

z.B.

%Vor%

Der Rest des Pause / Resume-Codes bleibt genau gleich.

Am besten!

    
Summon 23.05.2012 08:42
quelle