Tengo una vista de imagen, declarada mediante programación, y estoy configurando su imagen, también mediante programación.
Sin embargo, no puedo configurar la imagen para que se ajuste al aspecto y alinear el centro con la vista de la imagen.
En otras palabras, quiero que la imagen:
- Reduzca para ajustarse al aspecto, si la imagen es grande.
- Centra pero no escala, si la imagen es pequeña.
¿Cómo consigo eso?
ios
objective-c
uiimageview
uiimage
Ravi Vooda
fuente
fuente
Respuestas:
Solo pegando la solución:
Justo como dijo @manohar
resuelto mi problema
fuente
CGRectContainsRect(imageView.bounds, {CGPointZero, image.size})
CGSize imageSize = ((UIImage*)imagesArray[i]).size;
,CGSize viewSize = imageView.bounds.size
,if (viewSize.width > imageSize.width && viewSize.height > imageSize.height) {
.En un lenguaje rápido, podemos configurar el modo de contenido de la vista UIImage de la siguiente manera:
fuente
Rápido
Puede usar las siguientes opciones para posicionar su imagen:
scaleToFill
scaleAspectFit
// contenido escalado para ajustarse al aspecto fijo. el resto es transparenteredraw
// redibujar en cambio de límites (llamadas -setNeedsDisplay)center
// los contenidos permanecen del mismo tamaño. posicionado ajustado.top
bottom
left
right
topLeft
topRight
bottomLeft
bottomRight
fuente
Respuesta actualizada
Cuando originalmente respondí esta pregunta en 2014, no había ningún requisito para no escalar la imagen en el caso de una imagen pequeña. (La pregunta se editó en 2015 ). Si tiene ese requisito, deberá comparar el tamaño de la imagen con el de imageView y usarlo
UIViewContentModeCenter
(en el caso de una imagen más pequeña que imageView) oUIViewContentModeScaleAspectFit
en todos los demás casos .Respuesta original
Establecer el contentMode de imageView en
UIViewContentModeScaleAspectFit
fue suficiente para mí. Parece centrar las imágenes también. No estoy seguro de por qué otros están usando la lógica basada en la imagen. Vea también esta pregunta: ajuste y centro del aspecto iOSfuente
Resolví este problema así.
UIImageView
(conUIViewContentModeScaleAspectFit
)(CGSize imageSize = imageView.image.size)
UIImageView
cambiar el tamaño[imageView sizeThatFits:imageSize]
Quería poner UIView en el centro superior de
UICollectionViewCell
. Entonces, usé esta función.Esto funciona para mi.
fuente
Esta subclase usa el centro si la imagen no es más grande que la vista, de lo contrario, se reduce. Encontré esto útil para un
UIImageView
que cambia el tamaño.La imagen que muestra es más pequeña que la vista para tamaños grandes, pero más grande que la vista para tamaños pequeños. Quiero que solo se reduzca, pero no hacia arriba.
fuente
Puede lograr esto configurando el modo de contenido de la vista de imagen en UIViewContentModeScaleAspectFill.
Luego use el siguiente método para obtener el objeto uiimage redimensionado.
Editado aquí (Versión Swift)
fuente
fuente
fuente
Para las personas que buscan cambiar el tamaño de UIImage,
fuente