animate ios swift uikit core-animation uiviewanimation

ios - animate - ui animation swift 3



UIView.animateWithDuration swift loop animation (2)

No es necesario realizar el enfoque de bloque de finalización, solo use el argumento de opciones de animación:

actualizado para Swift 3.0

UIView.animate(withDuration: 2.0, delay: 0, options: [.repeat, .autoreverse], animations: { coloredSquare.frame = CGRect(x: 120, y: 220, width: 100, height: 100) }, completion: nil)

Si por alguna razón desea detener la animación más tarde, simplemente use:

coloredSquare.layer.removeAllAnimations()

En ViewController.Swift logré hacer una caja animada de un punto a otro. Pensé que sería fácil hacer un bucle así que la caja se animará a un punto y luego se animará a su posición original y luego se repetirá. Me las arreglé para mover el objeto a una posición y en "completo" moverlo de nuevo, pero eso no hace que haga un bucle. ¿Cómo se puede lograr esto?

Pensé que quizás esto podría funcionar pero honestamente no sé:

let boxmoves = [CGRect(x: 120, y: 220, width: 100, height: 100), CGRect(x: 120, y: 120, width: 100, height: 100)] for boxmove in boxmoves { coloredSquare.frame = boxmove }

¿Cómo podría centrarlo en función del ancho del dispositivo (supongo que hay algunas matemáticas involucradas?)?

Mi código:

let coloredSquare = UIView() coloredSquare.backgroundColor = UIColor.blueColor() coloredSquare.frame = CGRect(x: 120, y: 120, width: 100, height: 100) self.view.addSubview(coloredSquare) // found repeate but this will not animate as I want. //UIView.animateWithDuration(2.0, delay: 0.2, options: UIViewAnimationOptions.Repeat, animations: { UIView.animateWithDuration(2.0, animations: { coloredSquare.frame = CGRect(x: 120, y: 220, width: 100, height: 100) }, completion: { finished in UIView.animateWithDuration(2.0, animations: { coloredSquare.frame = CGRect(x: 120, y: 120, width: 100, height: 100) }) })


UIView.animate(withDuration: 3.0, delay: 0.0, options: [.curveLinear, .repeat], animations: { () -> Void in coloredSquare.frame = CGRect(x: 120, y: 220, width: 100, height: 100) }, completion: { (finished: Bool) -> Void in })