iphone - Recursos de Autoresizing UIView
autoresize (5)
De Apple:
... especifique el valor de esta máscara combinando las constantes descritas en UIViewAutoresizing utilizando el operador OR bitwise C. La combinación de estas constantes le permite especificar qué dimensiones de la vista deberían aumentar o disminuir en relación con la vista de supervisión. El valor predeterminado de esta propiedad es UIViewAutoresizingNone, que indica que no se debe cambiar el tamaño de la vista en absoluto.
... Por ejemplo, supongamos que esta propiedad incluye las constantes UIViewAutoresizingFlexibleWidth y UIViewAutoresizingFlexibleRightMargin pero no incluye la constante UIViewAutoresizingFlexibleLeftMargin, lo que indica que el ancho del margen izquierdo de la vista es fijo pero que el ancho de la vista y el margen derecho pueden cambiar. Por lo tanto, la vista aparece anclada al lado izquierdo de su vista de supervisión mientras que tanto el ancho de la vista como el espacio a la derecha de la vista aumentan.
Si los comportamientos de tamaño automático no ofrecen el diseño preciso que necesita para sus vistas, puede usar una vista de contenedor personalizado y anular su método layoutSubviews para ubicar sus subvistas con mayor precisión.
Por lo tanto, si desea colocar una vista anclada en la parte superior y derecha de su vista de supervisión, puede aplicar una máscara como:
[myView setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin];
He estado trabajando para autorizar un UIView personalizado y Apple tiene muy poco que decir al respecto. Lo que es más, según los comentarios de SO, la documentación de Apple es realmente incorrecta en algunas áreas. Finalmente, aunque hay seis componentes de cambio de tamaño en Interface Builder y seis para setAutoresizingMask:
parece que no se correlacionan en absoluto. Por ejemplo, establecer el ancho de resorte en IB tiene un efecto diferente al de establecer la autoresizingMask
de UIViewAutoresizingFlexibleWidth
en UIViewAutoresizingFlexibleWidth
cuando se gira el dispositivo.
¿Existen buenos recursos para aprender cómo funciona el cambio de tamaño en el iPhone?
Editar:
Entiendo los conceptos básicos que usa Apple, como contentMode, y he leído la documentación de UIView. Estoy buscando algo que explique un poco más profundamente qué hacen las configuraciones de IB en términos de lo que está disponible en el SDK programáticamente.
Encontré esta publicación útil para entender el autorizing de iOS.
http://www.techotopia.com/index.php/IOS_4_iPhone_Rotation,_View_Resizing_and_Layout_Handling
Para el registro, me rasqué la cabeza durante una hora porque mi UILabel de una línea simplemente NO ajustaría automáticamente el tamaño de la fuente para que se ajustara al ancho. Finalmente, esto hizo el truco:
label.contentMode = UIViewContentModeScaleAspectFit;
Busqué en Google y nadie parece aclarar este detalle (todos te dicen que la etiqueta debe ser 1 línea, establecer ajustesFontSizeToFitWidth / minimumFontSize, etc.). Tal vez el valor predeterminado de esta propiedad cambió? Estoy en iOS 4.3.
establecer la autoresizingMask
en UIViewAutoresizingFlexibleWidth
, es equivalente a establecer el ancho de resorte, más los puntales izquierdo y derecho en Interface Builder (los puntales significan que el borde no es flexible). Si quisiera replicar el comportamiento de solo establecer el ancho del resorte, pero no los puntales izquierdo y derecho, tendría que establecer la autoresizingMask
de UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin
en UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin
UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin
superview tiene parámetros tales como contentMode y autoresizesSubviews , que todos con autoresizingMask de sus subvistas hacen que el comportamiento de cambio de tamaño
lea atentamente http://developer.apple.com/library/ios/#documentation/uikit/reference/UIView_Class/UIView/UIView.html