2017-01-02 3 views
1

Ich versuche, eine animation zu schaffen, wo die Ansicht zuerst animieren nach unten und dann von Super-Ansicht entfernt wird, sieht mein Code wie folgt aus:UIView belebtes genannt beendet, bevor Animation beendet

UIView.animate(withDuration: 5, delay: 5, options: .allowAnimatedContent, animations: { 
     NSLog("Animation started") 
     self.scrollView.setContentOffset(CGPoint(x:0,y:-500), animated: true) 

    }, completion: {(finished: Bool) in 
     if finished{ 
      NSLog("Animation stopped") 
      self.view.removeFromSuperview() 
     } 
    }) 

Da die Dauer 5 ist also sollte der fertige sollte nach 5 Sekunden aufgerufen werden oder ich falsch liege?

In diesem Fall wird die fertige aufgerufen, bevor die Animation beendet ist und entfernt die Ansicht und Animation offenbar überhaupt nicht angezeigt, weil die Ansicht entfernt wurde.

Hier ist die NSLog

2017-01-02 17:39:37.649 [1581:26706] Animation started 
2017-01-02 17:39:37.652 [1581:26706] Animation stopped 

wurde in weniger als einer Sekunde

Antwort

2

Versuchen Sie, setContentOffset: Funktion animated zu false

UIView.animate(withDuration: 5, delay: 5, options: .allowAnimatedContent, animations: { 
    NSLog("Animation started") 
    self.scrollView.setContentOffset(CGPoint(x:0,y:-500), animated: false) 
}, completion: {(finished: Bool) in 
    if finished{ 
     NSLog("Animation stopped") 
     self.view.removeFromSuperview() 
    } 
}) 
+0

dang genannt fertig! es hat funktioniert :) –

Verwandte Themen