2016-05-14 1 views
1

Ich habe 5 Animationen, die nur Objekte auf der Seite sind, die nach dem Tippen auf den Login-Button fallen. Ich setze eine 0,3 inkrementale Verzögerung auf jede folgende. Ich habe mich gefragt, ob es eine sauberere und effizientere Möglichkeit gibt, diesen Code zu schreiben.Swift kombinieren Animationen in eins mit Abschluss

func loggedInAnimate1(){ 

    UIView.animateWithDuration(2, 
           delay: 0.0, 
           options: .CurveEaseIn, 
           animations: { 
           self.newUser.center.y += self.view.bounds.width 

     }, completion: nil) 

} 

func loggedInAnimate2(){ 

    UIView.animateWithDuration(2, 
           delay: 0.3, 
           options: .CurveEaseIn, 
           animations: { 
           self.loginButton.center.y += self.view.bounds.width 

     }, completion: nil) 

} 

func loggedInAnimate3(){ 

    UIView.animateWithDuration(2, 
           delay: 0.6, 
           options: .CurveEaseIn, 
           animations: { 
           self.loginPasswordTextField.center.y += self.view.bounds.width 

     }, completion: nil) 

} 

func loggedInAnimate4(){ 

    UIView.animateWithDuration(2, 
           delay: 0.9, 
           options: .CurveEaseIn, 
           animations: { 
           self.loginEmailTextField.center.y += self.view.bounds.width 

     }, completion: nil) 

} 

func loggedInAnimate5(){ 

    UIView.animateWithDuration(3, 
           delay: 1.2, 
           options: .CurveEaseIn, 
           animations: { 
           self.logo.center.y += self.view.bounds.height 

     }, completion: nil) 

} 

und auf der letzten möchte ich eine andere Funktion aufrufen ... ist das alles möglich? Danke

Antwort

2

Sie könnten die Abschluss-Schließung verwenden, um die nächste Animation auszulösen. Auf diese Weise müssen Sie keine Verzögerung verwenden, und Sie können die Animationen verschachteln.

UIView.animateWithDuration(2, delay: 0, options: .CurveEaseIn, animations: { 
    self.newUser.center.y += self.view.bounds.width 
}, completion: { _ in 
    UIView.animateWithDuration(2, delay: 0, options: .CurveEaseIn, animations: { 
     self.loginButton.center.y += self.view.bounds.width 
    }, completion: { _ in 
     // And so on... 
    }) 
})