2017-06-10 4 views
1

Ich habe eine Animation hatte, die ich vor kurzem gefangen habe nichtUIView-Block-Animation, Completion Immer wahr

zu funktionieren
//time is a variable used in my code 
UIView.animate(withDuration: time, delay: 0, options: [.curveLinear, .allowUserInteraction], animations: { 

       //this class is ofType UIScrollView 
       self.setContentOffset(CGPoint(x: self.contentSize.width-self.frame.width, y: 0), animated: false) 

      //Completion Handler 
      }, completion: { finished in 

        //It's always true, not sure a way to fix this 
        if(finished) { 

Aber später in meinem Code, habe ich eine Methode bestimmte Animationen zu entfernen, und zwar von diesem scrollView.

self.layer.removeAllAnimations() 

Es wird aufgerufen, und ich würde annehmen, dass es die oben

if(finished) { //Here 

return false daher zu machen annehmen wird, ist es nicht in der fertigen gehen sollte. Aber, fertig ist IMMER wahr. Ob ich diese Animation abbringe, die Animation fortsetze, egal, was ich mit der Animation mache, der Completion-Handler ist immer wahr. Irgendwelche Tipps zu diesem Thema?

Antwort

1

Ihr Aufruf von setContentOffset gibt animiert an: false, wenn dies die einzige Eigenschaft ist, die Sie ändern, dann werden keine tatsächlichen Animationen ausgeführt, daher wird der Aufruf von .animate (...) immer mit einem Wert von abgeschlossen wahr. Wenn Sie diese Eigenschaft (oder eine andere) mit animated: true festlegen und Ihre Dauer für die Beendigung der Animation zu kurz ist, könnte sie mit einem falschen Wert für den Parameter abgeschlossen werden.

+0

Sie schlauer Hund! Hatte nicht mal realisiert, verdammt Auto-Vervollständigung haha! Werde das versuchen, wenn ich nach Hause komme und dann ggf. nachbete! - Es ist mein einziges animiertes Objekt. – impression7vx

+0

Ich gebe die Antwort, aber es hat technisch nicht mein Problem gelöst als setContentOffSet: animiert: ist eine sehr einzigartige Methode und kann nicht manipuliert werden, wie schnell oder langsam es geht, wenn animiert wahr ist. – impression7vx