2017-07-19 9 views
-1

Also animierte ich eine Schaltfläche, um zu einem bestimmten Punkt (CGPoint) auf dem Bildschirm zu bewegen, wenn die Ansicht geladen wird. Ich fügte auch einen swipeGestureRecogniser hinzu, um es zu machen, dass, wenn der Benutzer nach links wischt, die Animation stoppt und eine neue beginnt, die die Taste zu einem anderen CGPoint bringt. Ich tat dies, indem ich die removeAllAnimations() Methode auf der Taste nannte. Das Problem besteht darin, dass wenn der Benutzer nach links wischt, die Schaltfläche die erste Animation ohne Animation beendet. Es stoppt also nicht und startet die neue Animation, sondern springt zum Ende der ersten Animation und geht dann zur nächsten Animation über. Gibt es eine Möglichkeit, die erste Animation zu stoppen und die nächste nahtlos zu starten?Swift - removeAllAnimations() - Eine Animation nach der anderen

Dies ist der Code:

Code

+0

fügen Sie einige Verzögerung zwischen zwei Animationen –

+0

Ich denke, es ist, weil Sie UIView Animation verwenden, removeAllAnimations funktionierte nur mit der CALayer Animation. Wenn Sie diese Animation als CALayer hinzufügen, werden alle Animationen durch die swipeLeft-Geste entfernt. –

Antwort

1

Es ist wie erwartet funktioniert. Zu dem Zeitpunkt, an dem Sie removeAllAnimations() aufrufen, wird nur eine Animation entfernt - die zweite wird im ersten Abschlussblock hinzugefügt. Anstatt also Verschachtelung Animationen, können Sie so etwas versuchen:

// first animation 
UIView.animate(withDuration: 5, delay: 0, options: .curveLinear, animations: { /... }, completion: { //... }) 
// second animation 
UIView.animate(withDuration: 5, delay: 5, animations: { /... }) 
Verwandte Themen