Qual è la syntax di AnimateWithDuration di Swift 3?

Sto trasferendo un’app vecchia su Xcode 7 beta e sto ricevendo un errore sulle mie animazioni:

Imansible richiamare “animateWithDuration” con un elenco di argomenti di tipo “(Double, delay: Double, options: nil, animations: () -> _, completion: nil)”

Ecco il codice:

UIView.animateWithDuration(0.5, delay: 0.3, options: nil, animations: { self.username.center.x += self.view.bounds.width }, completion: nil) 

Funziona con Xcode 6, quindi presumo che si tratti di un aggiornamento in Swift. Quindi la mia domanda è:

Qual è la syntax Swift 3 per animateWithDuration?

Swift 3/4 Sintassi

Ecco un aggiornamento con la syntax Swift 3:

 UIView.animate(withDuration: 0.5, delay: 0.3, options: [.repeat, .curveEaseOut, .autoreverse], animations: { self.username.center.x += self.view.bounds.width }, completion: nil) 

Se hai bisogno di aggiungere un gestore di completamento, aggiungi una chiusura in questo modo:

 UIView.animate(withDuration: 0.5, delay: 0.3, options: [.repeat, .curveEaseOut, .autoreverse], animations: { // animation stuff }, completion: { _ in // do stuff once animation is complete }) 

Vecchia risposta:

Risulta che è una soluzione molto semplice, basta cambiare le options: nil alle options: [] .

Sintassi Swift 2.2:

 UIView.animateWithDuration(0.5, delay: 0.3, options: [], animations: { self.username.center.x += self.view.bounds.width }, completion: nil) 

Cosa è cambiato?

Swift 2 ha eliminato l’elenco di opzioni delimitato da virgole in C-Style a favore dei set di opzioni (vedi: OptionSetType ). Nella mia domanda iniziale, sono passato a nil per le mie opzioni, che erano valide prima di Swift 2. Con la syntax aggiornata, ora vediamo un elenco di opzioni vuoto come un insieme vuoto: [] .

Un esempio di animateWithDuration con alcune opzioni sarebbe questo:

  UIView.animateWithDuration(0.5, delay: 0.3, options: [.Repeat, .CurveEaseOut, .Autoreverse], animations: { self.username.center.x += self.view.bounds.width }, completion: nil) 

Swift 3 …..

  UIView.animate(withDuration: 1.5, delay: 0.05 * Double(index), usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: { cell.transform = CGAffineTransform(translationX: 0, y: 0); }, completion: nil) 

Swift 3 Sintassi con blocco di completamento

 UIView.animate(withDuration: 3.0 , delay: 0.25, options: .curveEaseOut, animations: { // animation }, completion: { _ in // completion })