NSLayoutConstraint y "adjuntar" dos tags entre sí

Tengo dos tags. Quiero poder mover ambos si uno se mueve. ¿Cómo los "adjunto" junto con NSLayoutConstraints? Puedo hacer esto en IB, pero necesito hacerlo en código.

también, ¿qué son NSLayoutAttributeBaseline, NSLayoutAttributeLeading y NSLayoutAttributeTrailing?

EDITAR:

centrado powenetworkingByLabel (también conocido como label02):

[constraints addObject:[NSLayoutConstraint constraintWithItem:powenetworkingByLabel attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:myImage attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0]]; 

astackr las tags y cambiar verticalmente:

 [constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[rememberPasswordSwitch]-10-[rememberPasswordLabel]-10-[versionLabel]-[powenetworkingByLabel]-|" options:NSLayoutFormatAlignAllBaseline metrics:nil views:viewsDictionary]]; 

que produce el error:

* Aplicación de finalización debido a la exception no detectada 'NSInvalidArgumentException', motivo: 'No se puede analizar el formatting de restricción: Las vistas de máscara requeridas deben alinearse en un borde vertical, lo que no está permitido para el layout que también es vertical. V: [rememberPasswordSwitch] -10- [rememberPasswordLabel] -10- [versionLabel] – [powenetworkingByLabel] – | ……………………… ………………………………………….. ………………………… ^ '

sin la opción NSLayoutFormatAlignAllBaseline, funciona bien (se astackn pero no están todos centrados horizontalmente).

Si necesita hacer esto en código, primero cree NSLayoutConstraint (es), luego agregue la (s) restricción (s) a la vista de supervisión de las tags.

Hay dos maneras de crear restricciones en el código. constraintsWithVisualFormat suele ser mucho más conciso que constraintWithItem .

 // Make label1's NSLayoutAttributeTrailing be the 'standard Aqua space' away from label2's NSLayoutAttributeLeading. Also, vertically align their baselines. NSArray* constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[label1]-[label2]" options:NSLayoutFormatAlignAllBaseline metrics:nil views:NSDictionaryOfVariableBindings(label1, label2) ] ; 

Luego agrega la (s) restricción (s) a la vista de supervisión de las tags:

 [label1.superview addConstraints:constraints] ; // Use `label1.superview` or your own reference to the label's superview. 

La guía de layout de Cocoa Auto es breve y fácil de seguir. Dale una lectura y me encantaría contestar cualquier pregunta que aún tengas.

Edit 1

La opción NSLayoutFormatAlignAllBaseline crea restricciones (además de las creadas por la cadena VisualFormat) que alinean verticalmente las líneas de base de todos los objects especificados. Si su cadena VisualFormat está creando restricciones verticales (comienza con "V:"), no desea usar esta opción. Desea utilizar 0 (lo que significa que no hay opciones) o una opción que crea restricciones horizontales, como NSLayoutFormatAlignAllCenterX.