cómo configurar UIImageView alinear a la izquierda o derecha cuando se establece el contenido de modo a UIViewContentModeScaleAspectFit?

Quiero controlar la alignment de imágenes cuando uso UIViewContentModeScaleAspectFit en UIImageView .

introduzca la descripción de la imagen aquí

Por ejemplo, tengo dos UIImageView en una vista como arriba. Estos dos UIImageView 's UIViewContentModeScaleAspectFit son UIViewContentModeScaleAspectFit . Ahora quiero configurar la image 3 para alinear derecha e image 4 para alinear a la izquierda, para que estas dos imágenes puedan estar juntas.

Intento configurar el contenido de modo a UIViewContentModeScaleAspect|UIViewContentModeLeft , pero empeora las cosas.

Cualquier sugerencia es apreciada.

Finalmente, encuentro el proyecto UIImageViewAligned que puede solucionarlo .

No creo que lo que intentas hacer sea incluso posible. Sin embargo, recomiendo un enfoque completamente diferente. En lugar de save dos imágenes de tamaño completo en la memory al mismo time solo para mostrar partes de ellas, por qué no solo recortar las secciones de la image a los tamaños exactos que necesita. Este método sería mucho más eficiente.

Puede encontrar información sobre recortar un UIImage aquí: Recortar un UIImage

En lugar de tratar de alinear a la izquierda la image dentro de la vista de la image, puede agregar programáticamente una restricción de ancho a la vista de la image para que no haya "espacio sobrante".

Suponga que tiene una UIImageView con el modo de contenido "Aspect Fit" y una restricción de altura fija agregada en el generador de interfaces. Luego, en el controller de vista relevante, compruebe la relación de aspecto de la image y aplique la restricción de ancho necesaria para ajustar la vista de image a la image contenida. P.ej:

 @IBOutlet weak var imageView: UIImageView! override func viewDidLoad() { super.viewDidLoad() // UIImage loaded from somewhere... imageView.image = uiImage // Check the UIImageView for existing height constraints let heightConstraints = imageView.constraints.filter{$0.firstAttribute == .height} if let imageViewHeight = heightConstraints.first?.constant { // Calculate the width which would make the image view fit // the image perfectly, and constrain the view to that width. let desinetworkingImageViewWidth = (imageViewHeight / uiImage.size.height) * uiImage.size.width imageView.addConstraint(NSLayoutConstraint(item: imageView, attribute: .width, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1.0, constant: desinetworkingImageViewWidth)) } } 

Para aplicar esto a su problema, puede limitar sus dos UIImageView s para que estén uno al lado del otro, establecer una restricción de altura fija para ambos (del mismo valor) y luego progtwigr establecer el ancho usando el código anterior.