ios xcode storyboard autolayout xcode6

ios - Qué es "Restringir al margen" en el Guión gráfico en Xcode 6



storyboard autolayout (3)

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 vista previa, en lugar de los límites de la vista propia. Sí, está totalmente relacionado con los márgenes de diseño que mencionó en los documentos. Una ventaja es que puede redefinir sus márgenes de forma dinámica o diferente para cada tipo de dispositivo, y el diseño se actualizará de manera correspondiente sin modificar las restricciones.

Cuándo usarlo: cuando quiera aprovechar esta nueva flexibilidad.

Cuándo NO usarlo: para cualquier aplicación destinada a ejecutarse en iOS 7 o inferior.

Estoy trabajando con autolayout y restricciones y encontré que hay una opción Restringir Constrain to margins en XCode 6 que no estaba presente en XCode 5 y está marcada de forma predeterminada.

UITableView un proyecto de prueba y luego agregué un UITableView en un ViewController con el marco configurado al mismo tamaño que la vista y agregé 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 el espaciado 0.

Ahora, cuando desactivas la opción "Restringir al margen", se comporta igual que XCode 5 y sugerirías agregar 0 como restricción

Además, encontré que una vez que agregué la restricción con Restricción 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, soy capaz de explicar mi pregunta correctamente. Me gustaría entender lo que realmente hace "Restringir al margen" y cuándo debo y no debo 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.


La propiedad en UIView es: layoutMargins . Ver los Apple Docs . Básicamente, si los márgenes de diseño son 8,8,8,8 (el valor predeterminado), una restricción con 0 de espacio inicial 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 para 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 se mostrará la opción para crear la restricción NO en el margen. Esto es mucho más rápido en mi uso.


No entiendo en absoluto por qué la gente se queja de que "los márgenes causarían un bloqueo total en cualquier cosa anterior a iOS 8 ".

La configuración de sus restricciones con respecto al margen en un archivo xib o storyboard NO hace que su aplicación se bloquee en iOS7, y NO hace una diferencia de UI en su dispositivo iOS7, siempre que no toque UIView.layoutMargins y UIView.preservesSuperviewLayoutMargins propiedades en su código.

¿Qué es márgenes en iOS8?

Los márgenes de diseño representan el relleno alrededor del interior de una vista en UIView 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. En este sentido, es muy similar a la propiedad de relleno asociada con los bloques en CSS.

De forma predeterminada, una 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 la propiedad UIView.layoutMargins en el código, que solo está disponible en iOS8, puede ajustar estos valores.

Puede hacer que IB muestre los márgenes con Editor> Lienzo> Mostrar rectángulos de diseño:

Los márgenes se pueden usar para ayudar a diseñar sus vistas y subvistas. Cada UIView viene 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 utilizar márgenes

La única forma de usar los márgenes en Interface Builder es marcar la opción Relativo al margen al configurar sus restricciones. Así es como usted dirige su restricción a Usar márgenes en lugar de bordes al diseñar mi vista.

Veamos cuatro formas diferentes de configurar una restricción principal entre una vista y su subvista. Para cada restricción que revisemos, la primera asociación descrita será la guía de la subvista y la segunda será la guía de supervisión . A lo que se debe prestar mucha atención es al estado de marcar y desmarcar 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.

  1. Primer elemento (desmarcar), segundo elemento (comprobar): en este caso, estamos declarando que el borde izquierdo de la subvista debe alinearse con el margen izquierdo de la vista secundaria (como se muestra en esta imagen).
  1. Primer elemento (desmarcar), segundo elemento (desmarcar): Ambos usan borde, no margen . En este caso, estamos declarando que el borde izquierdo de la subvista debe alinearse con el borde izquierdo de la vista secundaria.
  1. Primer elemento (marcar), segundo elemento (desmarcar): en este caso, estamos declarando que el margen izquierdo de la subvista debe alinearse con el borde izquierdo de la vista secundaria. Este tipo de diseño en realidad hace que la subvista se superponga con la supervisión.
  1. Primer artículo (cheque), segundo artículo (cheque). Esto en realidad tiene el mismo efecto que el caso 2, ya que tanto la subvista como la supervisada tienen el mismo margen predeterminado. Estamos declarando que el margen izquierdo de la subvista debe alinearse con el margen izquierdo de supervisión.

Lo bueno de los márgenes

Esta nueva característica (iOS8) solo afecta el desarrollo de la interfaz de usuario si decide utilizar los márgenes.

Al utilizar márgenes, puede ajustar la ubicación de varias subvistas que comparten una relación común con una supervisión compartida al cambiar el valor de una propiedad individual. Este es un claro triunfo sobre la configuración de todas las restricciones asociadas con valores fijos, ya que si necesita actualizar todo el espaciado, en lugar de cambiar cada valor uno por uno, puede modificar simultáneamente toda la ubicación relevante al actualizar el margen de supervisión con una sola línea de código como este:

self.rootView.layoutMargins = UIEdgeInsetsMake(0, 50, 0, 0);

Para ilustrar este beneficio, en el siguiente caso, los bordes izquierdos de todas las subvistas se alinean con el margen izquierdo de la vista de supervisión. Por lo tanto, cambiar el margen izquierdo de superview afectará a todas las subvistas al mismo tiempo.