2010-09-10 23 views
10

¿Alguien puede responder esto definitivamente? Parece que a veces cambiar el marco de un UIImageView cambia el tamaño de su imagen y, a veces no lo hace.iOS: ¿debería cambiar el tamaño del marco de un UIImageView el tamaño de su imagen?

He cargado una imagen y he creado un UIImageView con ella, con un tamaño de aproximadamente 100x100. Hacer lo siguiente no tiene absolutamente ningún efecto:

myImageView.contentMode = UIViewContentModeScaleAspectFit; 
myImageView.frame = CGRectMake(0, 0, 30, 30); 

Obviamente quiero reducir la imagen abajo, pero simplemente se mantiene a tamaño completo.

EDIT: Si hago esto:

myImageView.clipsToBounds = YES; 

consigo una porción de 30x30 recortada de la imagen, pero sólo la parte superior de la misma. ¿Cómo reduzco toda la imagen a 30x30?

Respuesta

2

Sí, estás haciendo lo correcto. contentMode usado así debería mantener el tamaño de la imagen en su vista con el aspecto preservado. Y, obviamente, cambiar el marco debería reubicar y cambiar el tamaño de la vista.

¿Estás seguro de que nada más es sospechoso? ¿Es myImageView nil por alguna razón aquí? (Si se trata de una vista creada por el constructor de interfaz, ¿está conectada la toma de corriente?)

+0

definitivamente no es nada, ya que aparece en la pantalla y puedo configurar clipsToBounds en él. – sol

1

Cualquiera pensaría que funcionaría, pero hay personas en todas partes que tienen el mismo problema. La única vez que he visto que el trabajo no es por auto-escala, es en realidad por cambiar el tamaño y volver a dibujar la imagen: How to scale a UIImageView proportionally?

1

Prueba esto:

myImageView. límites = CGRectMake (0, 0, 30, 30);

No he tenido suerte cambiando el marco de un UIImageView para escalar la imagen. Intente cambiar los límites en su lugar.

3

Pregunta anterior, pero en mi caso el problema era tratar de hacer las modificaciones en "viewDidLoad" para el controlador de vista. Intente cambiar el marco en "viewDidLayoutSubviews".

- (void)viewDidLayoutSubviews 
{ 
    //do uiimageview frame changing here 
    ... 
} 
Cuestiones relacionadas