2011-03-02 29 views
11

He estado jugando con la construcción de interfaz de iPhone usando solo código y no usando IB.(máscara de Autoresizing) ancho flexible de una imagen con altura fija

Ahora estoy frente al siguiente problema:

¿Cómo puedo establecer una imagen para tener una anchura basado en la vista principal que se encuentra en y para hacer que tenga un margen de por ejemplo 50 píxeles en ambas lados. (también debería funcionar con rotación, por lo que el ancho debería ser flexible).

He intentado configurar el tamaño con frame.size.width - 50 por ejemplo, pero esto no funciona cuando la pantalla gira. Otra cosa que probé es usar las máscaras de aumento de tamaño, pero no entiendo completamente cómo funciona esto.

¿Todavía es necesario establecer un marco para una imagen o esto está completamente anulado por las máscaras de aumento automático? Y si se invalida, ¿cómo puedo darle a la imagen una altura fija y un ancho flexible?

El libro que estoy usando (programación avanzada de iOS4) no es muy claro en este asunto y la mayoría de los ejemplos que encuentro en la red son para el constructor de interfaces.

Gracias por su tiempo.

Saludos cordiales, Jasper

Respuesta

49

horizontalmente: márgenes derecho e izquierdo/

  • Redimensionar manteniendo fijas: UIViewAutoresizingFlexibleWidth
  • mantener el tamaño y la misma distancia de la izquierda: UIViewAutoresizingFlexibleRightMargin
  • mantener el tamaño, mantienen centrados: UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin
  • mantener el tamaño y misma distancia desde la derecha: UIViewAutoresizingFlexibleLeftMargin

Verticalmente:

  • Redimensionar manteniendo superior fija/márgenes inferiores: UIViewAutoresizingFlexibleHeight
  • mantener el tamaño y la misma distancia desde la parte superior: UIViewAutoresizingFlexibleBottomMargin
  • mantener el tamaño, permanecer centrado: UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin
  • mantener el tamaño y la misma distancia de la parte inferior: UIViewAutoresizingFlexibleTopMargin

Combina una de la primera sección con una de la segunda con un |. Por ejemplo, para cambiar el tamaño horizontalmente y mantener el mismo tamaño y distancia desde la parte superior verticalmente, usaría UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin.

Puede usar otras combinaciones para hacer algunas cosas más complicadas, pero esas son las funciones básicas.

+0

Entonces, básicamente, cómo lo veo ahora ... configura el marco para un determinado objeto. y luego especifica estos valores en caso de que la pantalla gire para que sepa cómo responder? – Jasper

+0

Sí, o en caso de que la supervista cambie de tamaño por cualquier otro motivo. Por ejemplo, la "barra de estado de la llamada entrante" podría aparecer, lo que provocaría que el UINavigationController de nivel superior cambiara el tamaño de su área de contenido, o simplemente podría cambiar el 'fotograma 'de la supervista por sus propios motivos. – Anomie

+0

Muchas gracias por esto. ¡Excelente! – pmk

0

es probable que desee esto:

[myImageView setAutoresizingMask:UIViewAutoresizingFlexibleWidth]; 

que mantendrá los márgenes estática y cambiar el ancho.

+0

esto es lo que intenté hacer, pero ¿cómo estableceré la altura de esta imagen, entonces, si quiero que se corrija? – Jasper

+0

Si no configura la altura para que sea flexible, la altura no cambiará. –

Cuestiones relacionadas