Modo contenido UIImageView

introduzca la descripción de la imagen aquí

La línea azul es el límite de la image. UIImageView 's UIViewContentModeScaleAspectFit es UIViewContentModeScaleAspectFit , y quiero mantener la escala de la image original. ¿Cómo puedo hacer que el borde izquierdo de la image esté en el borde izquierdo de UIImageView ? Pero no como el modo UIViewContentModeTopLeft . Mantenga la escala y ningún espacio en blanco a la izquierda. Mi inglés no es bueno, espero que ustedes puedan entender lo que estoy diciendo. Muchas gracias.

  yourimageView.contentMode = UIViewContentModeCenter; if ( yourimageView.bounds.size.width > yourimageView.size.width && yourimageView.bounds.size.height > yourimageView.size.height) { yourimageView.contentMode = UIViewContentModeScaleAspectFit; } 

Swift3

 yourimageView.contentMode = .center if yourimageView.bounds.size.width > yourimageView.size.width && yourimageView.bounds.size.height > yourimageView.size.height { yourimageView.contentMode = .scaleAspectFit } 

puedes cambiar tu modo como

 typedef NS_ENUM(NSInteger, UIViewContentMode) { UIViewContentModeScaleToFill, UIViewContentModeScaleAspectFit, // contents scaled to fit with fixed aspect. remainder is transparent UIViewContentModeScaleAspectFill, // contents scaled to fill with fixed aspect. some portion of content may be clipped. UIViewContentModeRedraw, // networkingraw on bounds change (calls -setNeedsDisplay) UIViewContentModeCenter, // contents remain same size. positioned adjusted. UIViewContentModeTop, UIViewContentModeBottom, UIViewContentModeLeft, UIViewContentModeRight, UIViewContentModeTopLeft, UIViewContentModeTopRight, UIViewContentModeBottomLeft, UIViewContentModeBottomRight, }; 

En el momento en que vi tu situación, pensé en esto:

 _imageView.contentMode = UIViewContentModeLeft | UIViewContentModeScaleAspectFit; 

y lo intenté, pero empeora las cosas

así que creo que puedes cambiar el tamaño de la image de tu vista para que se ajuste al tamaño que deseas con este código

 /// resize image to fit in show area without changing image ratio + (CGSize)resizeImageViewFromImageSize:(CGSize)imageSize toFitShowSize:(CGSize)showSize { CGFloat ratioW = imageSize.width / showSize.width; CGFloat ratioH = imageSize.height / showSize.height; CGFloat ratio = imageSize.width / imageSize.height; if (ratioW > 1 && ratioH > 1) { if (ratioW > ratioH) { imageSize.width = showSize.width; imageSize.height = imageSize.width / ratio; } else { imageSize.height = showSize.height; imageSize.width = imageSize.height * ratio; } } else if (ratioW > 1) { imageSize.width = showSize.width; imageSize.height = imageSize.width / ratio; } else if (ratioH > 1) { imageSize.height = showSize.height; imageSize.width = imageSize.height * ratio; } else { if (ratioW > ratioH) { if (showSize.width / imageSize.width <= 2) { imageSize.width = showSize.width; imageSize.height = imageSize.width / ratio; } } else { if (showSize.height / imageSize.height <= 2) { imageSize.height = showSize.height; imageSize.width = imageSize.height * ratio; } } } return imageSize; } 

luego coloque su imageView alineada a la izquierda de la pantalla

asi como esta

 imageView.contentMode = UIViewContentModeCenter; if (imageView.bounds.size.width > imageView.size.width && imageView.bounds.size.height > imageView.size.height) { imageView.contentMode = UIViewContentModeScaleAspectFit; } 

Rápido

 import UIKit import AVFoundation let originalsize = CGSizeMake(500, 500) let rect = CGRectMake(0, 0, 320, 480) var result = AVMakeRectWithAspectRatioInsideRect(originalsize, rect) print(result)