Necesita ayuda para boost un parámetro en UIView.animateWithDuration en swift

Gracias de antemano por cualquier ayuda. Tengo una colección de botones IBOutlet que estoy intentando presentar secuencialmente en la pantalla. Todos salen bien de la pantalla, pero a medida que se animan, me gustaría que cada button se muestre en la pantalla 0.05 segundos después del button anterior. No puedo imaginar cómo boost el retraso en UIView.animateWithDuration. Con el siguiente código, todos están animando en la pantalla al mismo time.

//outlet collection @IBOutlet var options: [UIButton]! let increment = 0.25 override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) for button in options { button.center.y += view.bounds.height } override func viewDidLoad() { super.viewDidLoad() for button in options { UIView.animateWithDuration(1.0, delay: increment, usingSpringWithDamping: 0.7, initialSpringVelocity: 0.0, options: nil, animations: { button.center.y -= self.view.bounds.height self.increment + 0.05 }, completion: nil) } } 

Gracias de nuevo por cualquier ayuda!

 for button in options { UIView.animateWithDuration(1.0, delay: increment, usingSpringWithDamping: 0.7, initialSpringVelocity: 0.0, options: nil, animations: { button.center.y -= self.view.bounds.height }, completion: nil) } increment = increment + 0.05 } 

Además: cambia esto

 let increment = 0.25 

A

  var increment = 0.25 

Incrementa el increment fuera de la animation. Debido a que animateWithDuration es un método asynchronous, regresará primero . Por lo tanto, todo su button tiene el mismo retraso.

 @IBOutlet weak var button1: UIButton! @IBOutlet weak var button2: UIButton! @IBOutlet var options: [UIButton]! let increment = 0.25 override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) for button in options { button.center.y += view.bounds.height } } override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) for button in options { UIView.animateWithDuration(1.0, delay: increment, usingSpringWithDamping: 0.7, initialSpringVelocity: 0.0, options: nil, animations: { button.center.y -= self.view.bounds.height }, completion: nil) self.increment + 0.05 } } 

También se obtiene el error "No se puede invocar '+ =' con una list de arguments de tipo '(Double, FloatLiteralConvertible)'" cuando se usa + = pero solo tomará +

Esta es la manera de lograr el retraso requerido entre las animaciones:

 var i! as UInt64; i = 0 for button in options { // your animation with delay UIView.animateWithDuration(1.0, delay: (i *0.05), usingSpringWithDamping: 0.7, initialSpringVelocity: 0.0, options: nil, animations: { button.center.y -= self.view.bounds.height }, completion: nil) }) ++i }