iphone - iOS SDK UIViewContentModeScaleAspectFit vs. UIViewContentModeScaleAspectFill
uiimageview set image swift (2)
Tengo una imagen que me gustaría mostrar en una UITableViewCell
utilizando el estilo UITableViewCellStyleSubtitle
que proporciona un UIImageView
y dos líneas de texto, además de una vista de accesorio opcional.
Sin embargo, cuando configuro el modo de contenido del UIImageView
en UIViewContentModeScaleAspectFit
o UIViewContentModeScaleAspectFill
, parece que no UIViewContentModeScaleAspectFill
. Ambos modos de contenido simplemente muestran toda la imagen, desplazando el texto a la derecha para dejar espacio a la imagen.
¿Alguien tiene algún ejemplo de cómo estos realmente difieren en la práctica? Los documentos dicen:
UIViewContentModeScaleAspectFit:
Scales the content to fit the size of the view by maintaining the aspect ratio. Any remaining area of the view’s bounds is transparent.
UIViewContentModeScaleAspectFill:
Scales the content to fill the size of the view. Some portion of the content may be clipped to fill the view’s bounds.
Pero estos modos de contenido no parecen comportarse como se anuncia.
EDITAR: estoy ejecutando SDK iOS 4.
La razón por la que no ve la diferencia entre esos modos es que UITableViewCell
automáticamente su vista de imagen para que se ajuste a la relación de aspecto de la imagen. Los modos de contenido solo entran en juego cuando la relación de aspecto de la vista es diferente de la de la imagen.
O bien, anule las presentaciones de layoutSubviews
en su clase UITableViewCell
personalizada o cree una vista de imagen usted mismo (no use la que proporciona la celda de la vista de tabla).
Yo tuve el mismo problema. Parece que la documentación de Apple es un poco insuficiente.
Encontré la respuesta buscando en Internet. http://www.iphonedevsdk.com/forum/iphone-sdk-development/2973-crop-image.html
Básicamente,
img1.contentMode = UIViewContentModeScaleAspectFill;
img1.clipsToBounds = YES;
Si quieres que sea un poco más elegante, echa un vistazo a esta publicación: UIImageView cambia ancho y altura