Subvenciones cinputs en una vista de contenido utilizando restricciones

Tengo una vista de contenido con dos subvistas. He astackdo las subvistas verticalmente y las he centrado horizontalmente (eje x) en la vista de contenido:

[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[buttonView]-[label]" options:NSLayoutFormatAlignAllCenterX metrics:nil views:NSDictionaryOfVariableBindings(buttonView, label)]]; 

Ahora quiero centrarlos verticalmente (eje y). Quiero el mismo espacio desde la parte superior del button Vista y la parte inferior de la vista de la label.

¿Cómo puedo hacer eso? ¿Obligaciones superiores e inferiores con prioridades?

EDITAR:

Scott, así es como el código que sugieres hace que se vea:

El botónView está demasiado arriba

Traté de hacer el espacio entre el buttonView y la label -1- pero no ayudó. y así es como lo necesito para lucir:

introduzca la descripción de la imagen aquí

Aquí está el código que solía lograrlo:

 [contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-13-[buttonView]-[label]-10-|" options:NSLayoutFormatAlignAllCenterX metrics:nil views:NSDictionaryOfVariableBindings(buttonView, label)]]; 

Mis limitaciones funcionan, pero está codificado en forma rígida, de lo que preferiría alejarme, si es posible.

Para get exactamente lo que está pidiendo, deberá especificar una serie de restricciones específicas. Puede comenzar un bash ingenuo (no use la siguiente línea) :

 [contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[buttonView]-[label]-|" options:NSLayoutFormatAlignAllCenterX metrics:nil views:NSDictionaryOfVariableBindings(buttonView, label)]]; 

Pero esto hace que el button y la label se estiren para satisfacer las restricciones. Entonces, solo digamos al sistema lo que queremos. Comenzaremos con su código, ya que nos proporciona una alignment básica.

 [contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[buttonView]-[label]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(buttonView, label)]]; [contentView addConstraint:[NSLayoutConstraint constraintWithItem:buttonView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:contentView attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:-4.0]]; [contentView addConstraint:[NSLayoutConstraint constraintWithItem:button attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:contentView attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0.0]]; [contentView addConstraint:[NSLayoutConstraint constraintWithItem:label attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:contentView attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0.0]]; 

¿De dónde vino ese 4.0? Es la mitad del espaciado de subview pnetworkingeterminado (8), alineando la parte inferior con el centro Y, pero arriba un poco para dejar que la línea media suba.

Además, observará que NSLayoutFormatAlignAllCenterX el NSLayoutFormatAlignAllCenterX , porque no hace nada significativo en este punto, y en realidad no estaba alineando las vistas con el centro X de la supervisión, solo con las demás.

Editar:

Hice una aplicación de ejemplo simple, que tiene un solo ViewController y un button y una label añadidos a una vista. Vea el código como una esencia . Esto produce el siguiente resultado:

Ejemplo de aplicación con mis limitaciones

Como comparación, aquí solo utilizas tu restricción original en esta aplicación (por eso pensé que NSLayoutAlignAllCenterX no estaba centrando):

Ejemplo de aplicación con las limitaciones del cuestionario

Me pregunto si hay más cosas que hacer con su button (¿es una class personalizada?) Y el contentView la contentView .