2012-03-01 23 views
5

Tengo un UIImageView como subview de UIView (tamaño de marco 300 x 300). Mi UIImage sería retrato, paisaje o algunos tamaños extraños. ¿Cómo llené el UIImage dentro del tamaño de fotograma UIView sin estirar la imagen a 300 x 300?UIImageView rellenar UIView

El propósito de esto, añadiré otro UIImageView como borde de la imagen. Por favor ayuda.

Gracias.

Respuesta

13

Trate

[img setContentMode:UIViewContentModeScaleAspectFit];

UIViewContentModeScaleAspectFit: Ajusta el contenido para ajustarse al tamaño de la vista por el mantenimiento de la relación de aspecto. Cualquier área restante de los límites de la vista es transparente.

o [img setContentMode:UIViewContentModeScaleAspectFill];

UIViewContentModeScaleAspectFill: Escala el contenido para llenar el tamaño de la vista. Parte del contenido de se puede recortar para llenar los límites de la vista.

si está saturando subvistas, entonces usted tiene que hacer

[imgView clipToBounds:YES]; 
+0

intenté utilizar los 2 modos anteriores, mi imagen no cabe en 300 x 300 – RockBaby

+0

ivEditImage = [[UIImageView alloc] initWithImage: imgChoosen]; ivEditImage.frame = vwEditingImage.frame; [ivEditImage setContentMode: UIViewContentModeScaleAspectFill]; – RockBaby

+0

incluso 'UIViewContentModeScaleAspectFit' no lo hace? –

0

Utilice la propiedad contentMode de UIImageView.


Editar: y establecer el tamaño de la imagen a 300x300 .

0
[image setContentMode:UIViewContentModeScaleToFill]; 
1

Establecer la propiedad contentMode de UIImageView a cualquiera de estos valores dependiendo de donde desea ponerlo en el supervista:

UIViewContentModeCenter, 
    UIViewContentModeTop, 
    UIViewContentModeBottom, 
    UIViewContentModeLeft, 
    UIViewContentModeRight, 
    UIViewContentModeTopLeft, 
    UIViewContentModeTopRight, 
    UIViewContentModeBottomLeft, 
    UIViewContentModeBottomRight, 

Como estos valores:

UIViewContentModeScaleToFill, 
    UIViewContentModeScaleAspectFit, 
    UIViewContentModeScaleAspectFill, 

Hará que la imagen sea de 300 x 300, que es lo que no desea.

+3

¿Hay alguna manera de combinarlas? Lo que quiero es esto: asumir una imagen de 100x10 y una pantalla completa UIImageView. Quiero que se expanda hasta que el tamaño horizontal sea igual al ancho UIImageView (digamos 320 para el iPhone) y la imagen resultante (ahora a 320x32) esté en la parte superior. Intenté esto imgview.contentMode = UIViewContentModeScaleAspectFit | UIViewContentModeTop; Pero no funciona. Simplemente hace la parte UIViewContentModeTop (100x10 en la parte superior). – Gik

+0

@Gik: ¿Has encontrado alguna forma de hacerlo? Tengo exactamente el mismo problema. –

+0

Lo hice usando un truco. "Creé" otra imagen (del original), estirado para llenar el tamaño más pequeño y luego rellenado con los píxeles que "faltaba". Así que al final obtuve una imagen de 300x300 del original. Si quieres, podría publicar el código. – Gik

2

Ah, acabo de volver a leer lo que estaba preguntando, sé cuál es su pregunta ahora.

El marco de su UIImageView cambia, y cuando lo hace su imagen. Usted no quiere que su imagen cambie, pero usted quiere que su ImageView para ajustar a llenar la vista está contenida en.

ACTUALIZACIÓN

lo he descubierto.

[self.imageView setContentMode:UIViewContentModeCenter]; 

Sin importar la orientación, el tamaño sigue siendo el mismo.

También tiene la opción de configurarlo para alinear arriba, abajo, izquierda, derecha, arriba a la izquierda, arriba a la derecha, abajo a la izquierda, abajo a la derecha, todo lo cual solo ayuda a alinear su imagen y NO volver a dibujar la imagen.

¿Eso ayuda?

+0

si vuelvo a dibujar, estirará mi imagen. ¿Hay alguna opción para no estirar? – RockBaby