Estoy haciendo una aplicación de tarjeta y necesito hacer una animación para que una tarjeta cambie sus restricciones para moverse a otro lugar. ¿Cómo haría esto para un UIImage?

0
user9178582 15 ene. 2018 a las 22:21

3 respuestas

La mejor respuesta

En primer lugar, debe arrastrar y soltar su restricción en su controlador de vista para crear una salida. De la misma manera que lo haces con UIImageView o UITableView, etc.

En realidad, para aquellos que vieron WWDC (2014, supongo), Apple explicó cómo animar la interfaz de usuario de la manera adecuada.

En primer lugar, debe llamar al método layoutIfNeeded() para asegurarse de que todo en su vista se ha presentado. Después de que pueda cambiar su restricción y justo después de eso en su bloque de animación, llame al método layoutIfNeeded() para diseñar su restricción con el nuevo valor.

Entonces el código debería verse así:

view.layoutIfNeeded() // to make sure your view have laid out

self.constraint.constant = //change your constant to any value

UIView.animate(withDuration: 1.0) {
   self.view.layoutIfNeeded() //layout your constraint with the new value
}
0
Mischanya Schtrigel 15 ene. 2018 a las 21:12

Creo que estás confundiendo UIImage con UIImageView. La primera es la representación de datos de la imagen, la segunda es la Vista que muestra UIImage.

Así que supongo que quieres moverte por UIImageView. Para ello, obtenga una referencia a las restricciones (p. Ej., Arrastrando ctrl desde la restricción en el guión gráfico a su instancia UIViewController).

Después de eso, puede actualizar la restricción en un bloque de animación como aquí:

// Make sure the view is laid out as Mischanya Schtrigel stated
self.view.layoutIfNeeded() 
UIView.animate(withDuration: 0.5) { // duration in seconds
    myConstraint.constant = 50 // update your constraint here
    self.view.layoutIfNeeded()
}

Al contrario de las otras respuestas, me gusta poner los cambios de restricción en el cierre de la animación para que quede más claro lo que se va a animar.

1
fl034 23 ene. 2018 a las 16:14

Enganche la restricción principal, final, CenterX O CenterY del UIImageView y haga esto

self.imageLeadCon.constant = // value

UIView.animate(withDuration: 3.0 ,  animations: {

   self.view.layoutIfNeeded()

    // animation
}, completion: { _ in

    // completion
})
1
Sh_Khan 15 ene. 2018 a las 19:30
48269404