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
})