¿Qué es "Limitar el margen" en Storyboard en Xcode 6?

Estoy trabajando con autolayout y restricciones y he encontrado que hay una opción de Constrain to margins en XCode 6 que no estaba presente en XCode 5 y está marcada de manera pnetworkingeterminada.

UITableView un proyecto de testing luego agregué una UITableView en un ViewController con el marco establecido al mismo tamaño que la vista y agregué restricciones

XCode 6 Puede ver aquí aunque tableview tenga el mismo marco que la vista XCode sugiere agregar -16 como restricción mientras que XCode 5 sugeriría agregar espaciado 0.

Con Limitar el margen comprobado

Ahora cuando desactiva la opción "Limitar el margen", se comporta igual que XCode 5 y sugeriría agregar 0 como restricción

Con Restringir el margen UnChecked

Además, descubrí que una vez que agrego restricción con Limitar a margen comprobado, ya no puedo abrir el file de guión gráfico en Xcode 5, así que definitivamente es algo nuevo en Xcode 6

Con suerte, puedo explicar mi pregunta correctamente. Me gustaría entender qué hace realmente "Limitar el 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 layout en discusión aquí , me pregunto si está relacionado con esto.

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

Establecer sus restricciones relativas al margen en un file xib o storyboard NO hace que su aplicación falle en iOS7, y NO hace una diferencia de UI en su dispositivo iOS7 tampoco, siempre que no toque las UIView.layoutMargins y UIView.preservesSuperviewLayoutMargins properties en su código.

¿Qué son los márgenes en iOS8?

Los márgenes de layout representan el relleno alnetworkingedor del interior de una UIView que el sistema de layout puede usar cuando se presentan subvistas: para garantizar que quede un espacio entre el borde de una vista y una subvista. En este sentido, se parece mucho a la propiedad de relleno asociada con bloques en CSS.

introduzca la descripción de la imagen aquí

De forma pnetworkingeterminada, una UIView tiene márgenes de layout de 8 puntos en cada lado, y esto no se puede cambiar en Interface Builder . Sin embargo, al establecer la propiedad UIView.layoutMargins en el código, que solo está disponible en iOS8, puede ajustar estos valores.

Puede get IB para mostrar los márgenes con el Editor> Lienzo> Mostrar rectangularjs de layout: introduzca la descripción de la imagen aquí

Los márgenes se pueden usar para ayudar a diseñar sus vistas y subvistas. Cada UIView viene con márgenes por defecto, pero solo afecta la colocación de la vista cuando configura una restricción relacionada con un margen.

Cómo usar márgenes

La única forma de utilizar los márgenes en Interface Builder es comprobar la opción relativo a margen al configurar sus restricciones. Así es como dirige su restricción a Usar márgenes en lugar de bordes cuando expreso mi vista.

introduzca la descripción de la imagen aquí

Echemos un vistazo a cuatro forms 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 líder de la subvista , y la segunda será la líder de supervista . Lo que se quiere prestar atención es verificar y desmarcar el estado de la opción Relativo a margen de cada extremo de restricción, ya que define si la restricción está vinculada al margen o al borde de la vista.

  1. Primer elemento (desmarcar), segundo elemento (marca): en este caso, declaramos que el borde izquierdo de la subview debe alinearse con el margen izquierdo de la supervista (como se muestra en esta image).

introduzca la descripción de la imagen aquí

  1. Primer elemento (desmarcar), segundo elemento (desmarcar): Ambos usando borde, no margen . En este caso, declaramos que el borde izquierdo de la subvista debe alinearse con el borde izquierdo de la supervisión.

introduzca la descripción de la imagen aquí

  1. Primer elemento (verificar), segundo elemento (desmarcar): en este caso, declaramos que el margen izquierdo de la subvista debe alinearse con el borde izquierdo de la supervisión. Este tipo de layout realmente hace que la subvista se superponga a la supervisión.

introduzca la descripción de la imagen aquí

  1. Primer ítem (cheque), segundo ítem (cheque). Esto realmente tiene el mismo efecto que el caso 2, ya que tanto la subvista como la supervista tienen el mismo margen pnetworkingeterminado. Estamos declarando que el margen izquierdo de la subvista debe alinearse con el margen izquierdo de la supervisión.

introduzca la descripción de la imagen aquí

Lo bueno de los márgenes

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

Mediante el uso de márgenes, puede ajustar la location de varias subvistas que comparten una relación común con una vista de supervisión compartida al cambiar el valor de una sola propiedad. Esta es una ganancia clara al establecer todas las restricciones asociadas con valores fijos, ya que si necesita actualizar todo el espaciado, en lugar de cambiar cada uno de los valores, puede modificar simultáneamente todas las ubicaciones relevantes actualizando el margen de la 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 subalpaciones están alineados con el margen izquierdo de su supervisor. Por lo tanto, cambiar el margen izquierdo de superview afectará a todas las subvenciones al mismo time.

introduzca la descripción de la imagen aquí

En iOS 8, ahora tiene la opción de definir sus restricciones relativas a un margen pnetworkingefinido para los límites de la supervisión, en lugar de los límites de la supervisión. Sí, está totalmente relacionado con los márgenes de layout que señaló en los documentos. Una ventaja es que puede networkingefinir sus márgenes dinámicamente, o de manera diferente para cada tipo de dispositivo, y el layout se actualizará correspondientemente sin modificar las restricciones.

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

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

La propiedad en UIView es: layoutMargins . Ver los Apple Docs . Básicamente, si los márgenes de layout son 8,8,8,8 (el valor pnetworkingeterminado), una restricción con 0 margen de espacio en el margen del contenedor tendrá una position x de 8. Tenga en count 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 + arrastre para mostrar la window emergente de creación de restricciones.

Si el menu muestra para crear la restricción al margen de manera pnetworkingeterminada, 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 para crear la restricción NO al margen. Esto es más rápido en mi uso.