es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo hacer que la altura y ancho de vista de imagen (relación de aspecto) sean dinámicos según el tamaño de la imagen en Swift 4 o 5?

Tengo una vista de colección en la que estoy llenando imágenes que obtengo desde el backend. Estoy utilizando AutoLayout y he establecido estáticamente la altura de la imagen como 180 y el ancho como el ancho de la pantalla. Pero he aprendido que cada imagen tiene una altura y ancho diferentes que obtengo del backend. Entonces, ¿cómo diseñar mi vista de imagen para poder mostrar la imagen en su tamaño original?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para mostrar la imagen en su tamaño original, es posible modificar las restricciones de AutoLayout para ajustar de forma dinámica la altura de UIImageView en función de la altura de la imagen proporcionada por la retroalimentación del backend.

    En primer lugar, se eliminan las restricciones de altura estática de 180 de UIImageView. Después se puede ajustar programáticamente la restricción de altura de UIImageView tomando como base la altura de la imagen proveniente de la retroalimentación del backend.

    Para hacer esto, se accede a la proporción del aspecto de la imagen (AnchoImagen / AlturaImagen) y se multiplica por el ancho del UIImageView.

    Aquí está un ejemplo del código:

    let image = // imagen devuelta por el backend
    let aspectRatio = image.size.width / image.size.height
    let imageViewWidth = collectionView.frame.size.width // suponiendo que se está usando UICollectionView para mostrar imágenes
    let imageViewHeight = imageViewWidth / aspectRatio
    
    imageView.translatesAutoresizingMaskIntoConstraints = false
    imageView.heightAnchor.constraint (equalToConstant: imageViewHeight) .isActive = true
    

    En este ejemplo, se toma la proporción del aspecto de la imagen y se multiplica por el ancho de UIImageView para determinar la altura necesaria para el UIImageView.

    Al establecer programáticamente la restricción de altura de UIImageView en función de la altura de la imagen recibida del backend, la imagen se mostrará en su tamaño original.

Comments are closed.