Pregunta

He estado trabajando en un cambio de tamaño automático UIView personalizados y Apple tiene muy poco que decir sobre esto. Lo que es más, con base en la retroalimentación de SO, la documentación de Apple es realmente mal en algunas áreas. Por último, a pesar de que hay seis componentes de cambio de tamaño en el Interface Builder y seis para setAutoresizingMask: ellos no parecen correlacionarse en absoluto. Por ejemplo, configurar el resorte de anchura en IB tiene un efecto diferente de ajuste de la autoresizingMask a UIViewAutoresizingFlexibleWidth al girar el dispositivo.

¿Hay buenos recursos para aprender acerca de cómo funciona el cambio de tamaño en el iPhone?

Editar

Me entender los conceptos básicos de Apple utiliza como contentMode, y he leído a través de la documentación UIView. Estoy buscando algo que explica un poco más profundamente lo que la configuración del IB hacen en términos de lo que está disponible en el SDK de programación.

¿Fue útil?

Solución

Configuración de la autoresizingMask a UIViewAutoresizingFlexibleWidth, equivale a establecer el resorte de anchura, más tanto el puntales adecuados en Interface Builder izquierda y (los puntales significan que el borde es no flexible). Si quería replicar el comportamiento de ajuste de sólo el muelle de ancho, pero no los puntales izquierdo y derecho, que tendría que autoresizingMask conjunto de UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin

Otros consejos

He encontrado este post útil para comprender el IOS de tamaño automático.

http://www.techotopia.com/index.php/IOS_4_iPhone_Rotation,_View_Resizing_and_Layout_Handling

A partir de Apple:

  

... especificar el valor de esta máscara mediante la combinación de las constantes descritas en   UIViewAutoresizing usando el bit a bit C operador OR. la combinación de estos   Las constantes le permite especificar qué dimensiones de la vista deben crecer o   reducir con relación a la supervista. El valor predeterminado de esta propiedad   es UIViewAutoresizingNone, lo que indica que la vista no debe ser   redimensionada a todos.

     

... Por ejemplo,   supongamos que esta propiedad incluye la UIViewAutoresizingFlexibleWidth y   UIViewAutoresizingFlexibleRightMargin constantes pero no incluye   la constante de UIViewAutoresizingFlexibleLeftMargin, indicando así   que el anchura de margen izquierdo de la vista se fija pero que la vista de   anchura y margen derecho pueden cambiar. Por lo tanto, la vista aparece anclado a   el lado izquierdo de su supervista mientras que tanto el ancho de vista y la brecha   a la derecha de la vista de aumento.

     

Si los comportamientos de tamaño automático no ofrecen la disposición precisa que   necesita para sus puntos de vista, se puede utilizar una vista contenedor personalizado y anulación   su método layoutSubviews para posicionar su subvistas con mayor precisión.

Así que si desea posicionar una visión anclada en la parte superior y el lado derecho de su supervista, es posible aplicar una máscara como:

[myView setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin];

supervista tiene parámetros tales como contentMode y autoresizesSubviews , cosa que todos con autoresizingMask de sus subvistas hace que el comportamiento de cambio de tamaño

leer con atención http: // developer.apple.com/library/ios/#documentation/uikit/reference/UIView_Class/UIView/UIView.html

Para que conste, se rascó la cabeza durante una hora porque mi una línea UILabel simplemente sería NO auto-ajusta el tamaño de fuente a la anchura de ajuste. Por último, este hizo el truco:

label.contentMode = UIViewContentModeScaleAspectFit;

Busqué en Google y nadie parece aclarar este detalle (todo el mundo te dice la etiqueta debe ser de 1 línea, juego adjustsFontSizeToFitWidth / minimumFontSize etc.). Tal vez el valor predeterminado de esta propiedad ha cambiado? Estoy en iOS 4.3.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top