Vi en muchas publicaciones para cambiar el tamaño de la imagen manteniendo la relación de aspecto. Estas funciones utilizan los puntos fijos (Ancho y Altura) para RECT mientras cambia el tamaño. Pero en mi proyecto, necesito cambiar el tamaño de la vista basándome solo en el Ancho, la Altura debe tomarse automáticamente según la relación de aspecto. Alguien me ayude a lograr esto.
136
newWidth
variable aquí, ya lo esi_width
.UIGraphicsBeginImageContextWithOptions(CGSizeMake(newWidth, newHeight), NO, 0);
lugar deUIGraphicsBeginImageContext(CGSizeMake(newWidth, newHeight));
Si no sabe si la imagen será vertical u horizontal (por ejemplo, el usuario toma una foto con la cámara), creé otro método que toma parámetros de ancho y altura máximos.
Digamos que tiene una
UIImage *myLargeImage
relación 4: 3.El UIImage redimensionado será 1024x768 si es horizontal; 768x1024 si retrato. Este método también generará imágenes de mayor resolución para la visualización de retina.
fuente
min(ratioX, ratioY)
. De lo contrario, si el ancho es mayor, es posible que no se ajuste a la altura máxima.La mejor respuesta Maverick 1st se tradujo correctamente a Swift (trabajando con el último swift 3 ):
fuente
gracias @ Maverick1st el algoritmo, lo implementé
Swift
, en mi caso la altura es el parámetro de entradafuente
Este método es una categoría en UIImage. Escala para ajustarse en pocas líneas de código usando AVFoundation. No olvides importar
#import <AVFoundation/AVFoundation.h>
.fuente
Versión Swift 5 de ajuste de aspecto a la altura , basada en la respuesta de @ János
Utiliza la
UIGraphicsImageRenderer
API moderna , por lo queUIImage
se garantiza una devolución válida .Puede usar esto junto con un recurso de imagen PDF (basado en vectores) para preservar la calidad en cualquier tamaño de renderizado.
fuente
La forma más simple es establecer el marco de su
UIImageView
y establecercontentMode
una de las opciones de cambio de tamaño.El código es así: esto se puede usar como un método de utilidad:
fuente
Programáticamente:
Storyboard:
fuente
Bueno, tenemos algunas buenas respuestas aquí para cambiar el tamaño de la imagen, pero solo modifico según mi necesidad. Espero que esto ayude a alguien como yo.
Mi requisito era
Es posible que desee comprobar esto también para el cálculo del cambio de tamaño.
fuente
Solo importe AVFoundation y use
AVMakeRectWithAspectRatioInsideRect(CGRectCurrentSize, CGRectMake(0, 0, YOUR_WIDTH, CGFLOAT_MAX)
fuente
Para mejorar la respuesta de Ryan:
fuente
Cuando la escala se establece en 0.0, se usa el factor de escala de la pantalla principal, que para pantallas Retina es 2.0 o superior (3.0 en el iPhone 6 Plus).
fuente
Ryan's Solution @Ryan en código rápido
utilizar:
fuente
En Swift 3 hay algunos cambios. Aquí hay una extensión de UIImage:
fuente
Zeeshan Tufail y Womble responden en Swift 5 con pequeñas mejoras. Aquí tenemos una extensión con 2 funciones para escalar la imagen a
maxLength
cualquier dimensión y compresión JPEG.fuente
Este fue perfecto para mí. Mantiene la relación de aspecto y toma a
maxLength
. Ancho o Altura no será más demaxLength
fuente
Calcula la mejor altura de la imagen para el ancho disponible.
fuente
Lo he resuelto de una manera mucho más simple.
El multiplicador de la escala definirá la escala de la imagen, cuanto más pequeño sea el multiplicador. para que pueda verificar qué se ajusta a su pantalla.
O también puede obtener el multiplicador dividiendo el ancho de imagen / ancho de pantalla.
fuente