Estoy trabajando con autolayout y restricciones y descubrí que hay una Constrain to margins
opción en Xcode 6 que no estaba presente en Xcode 5 y está marcada por defecto.
Creé un proyecto de prueba y luego agregué un UITableView
en un ViewController con el marco establecido en el mismo tamaño que la vista y agregué restricciones
Xcode 6 Puede ver aquí aunque la vista de tabla tiene el mismo marco que la vista Xcode sugiere agregar -16 como restricción, mientras que Xcode 5 sugeriría agregar un espacio 0.
Ahora, cuando desmarca la opción "Restringir al margen", se comporta igual que Xcode 5 y sugeriría agregar 0 como restricción
Además, descubrí que una vez que agrego la restricción con Restringir al margen marcado, ya no puedo abrir el archivo del guión gráfico en Xcode 5, por lo que definitivamente es algo nuevo en Xcode 6
Con suerte, puedo explicar mi pregunta correctamente. Me gustaría entender qué hace realmente "Restringir al margen" y cuándo debería y no debería usarlo. Me disculpo si es algo muy simple y obvio.
EDITAR
Encontré algo sobre los márgenes de diseño en discusión aquí , me pregunto si está relacionado con esto.
fuente
Respuestas:
No entiendo en absoluto por qué la gente se queja de que "los márgenes causarían un colapso total en cualquier cosa antes de iOS 8 ".
¿Qué son los márgenes en iOS8?
Los márgenes de diseño representan el relleno alrededor del interior de un
UIView
sistema que el sistema de diseño puede usar al diseñar subvistas, para garantizar que quede un espacio entre el borde de una vista y una subvista. A este respecto, es muy similar a la propiedad de relleno asociada con bloques en CSS.Por defecto, a
UIView
tiene márgenes de diseño de 8 puntos en cada lado, y esto no se puede cambiar en Interface Builder . Sin embargo, al configurar laUIView.layoutMargins
propiedad en el código, que solo está disponible en iOS8, puede ajustar estos valores.Los márgenes se pueden usar para ayudar a diseñar sus vistas y subvistas. Todos
UIView
vienen con márgenes de forma predeterminada, pero solo afectan la ubicación de la vista cuando configura una restricción relacionada con un margen.Cómo usar los márgenes
La única forma de usar márgenes en Interface Builder es marcar la opción Relativo al margen mientras configura sus restricciones. Así es como dirige su restricción para usar márgenes en lugar de bordes al diseñar mi vista.
Echemos un vistazo a cuatro formas diferentes de configurar una restricción principal entre una vista y su subvista. Para cada restricción que revisamos, la primera asociación descrita será la principal de la subvista , y la segunda será la principal de la supervista . A lo que debe prestar mucha atención es al estado de verificación y desmarcación de la opción Relativo al margen de cada final de restricción, porque eso define si la restricción está vinculada al margen o al borde de la vista.
Lo bueno de los márgenes
Esta nueva característica (iOS8) solo afecta el desarrollo de la interfaz de usuario si decides usar márgenes.
Mediante el uso de márgenes, puede ajustar la ubicación de varias subvistas que comparten una relación común con una supervista compartida cambiando el valor de una sola propiedad. Esta es una clara victoria sobre la configuración de todas las restricciones asociadas con valores fijos, porque si necesita actualizar todo el espacio, en lugar de cambiar cada valor uno por uno, puede modificar simultáneamente todas las ubicaciones relevantes actualizando el margen de la supervista con una sola línea de código como este:
Para ilustrar este beneficio, en el siguiente caso, todos los bordes izquierdos de las subvistas están alineados con el margen izquierdo de su supervista. Por lo tanto, cambiar el margen izquierdo de la supervista afectará a todas las subvistas al mismo tiempo.
fuente
En iOS 8 ahora tiene la opción de definir sus restricciones en relación con un margen predefinido a los límites de la supervista, en lugar de los límites de la misma. Sí, está totalmente relacionado con los márgenes de diseño que señaló en los documentos. Una ventaja es que puede redefinir sus márgenes dinámicamente o de manera diferente para cada tipo de dispositivo, y el diseño se actualizará correspondientemente sin modificar las restricciones.
Cuándo usarlo: cuándo quieres aprovechar esta nueva flexibilidad.
Cuándo NO usarlo: para cualquier aplicación destinada a ejecutarse en iOS 7 o inferior.
fuente
La propiedad de UIView es:
layoutMargins
. Ver los documentos de Apple . Básicamente, si los márgenes de diseño son 8,8,8,8 (el valor predeterminado), una restricción con 0 espacios iniciales al margen del contenedor tendrá una posición x de 8. Tenga en cuenta que esto solo está disponible en iOS8 o posterior.Para todos los que no quieren que sus restricciones vayan al margen del contenedor:
CTRL + clic + arrastrar para mostrar la ventana emergente de creación de restricciones.
Si el menú muestra crear la restricción al margen de forma predeterminada, mantenga presionada la opción / alt para permitir que la restricción se realice en el contenedor y no en el margen del contenedor.
Ahora mostrará la opción de crear la restricción NO al margen. Esto es MUCHO más rápido en mi uso.
fuente