¿Cómo agrego una restricción tal que una vista sea tan ancha como la más ancha de otras dos vistas?

Por ejemplo, las tags A, B y C. La label A debe tener el ancho de cualquiera que sea más ancho, B o C.

Visualmente, algo a lo largo de las líneas de

@"H:[viewA(==MAX(viewB,viewC))]" 

Si desea asegurarse de que la viewA es simultáneamente al less tan amplia como la vista viewB y la vista viewC , use dos declaraciones VFL separadas, @"H:[viewA(>=viewB)]" y @"H:[viewA(>=viewC)]" .

Si también desea asegurarse de que A no será más ancho que el ancho máximo de viewB y / o viewC , definiría una restricción opcional (es decir, una prioridad más baja que UILayoutPriorityRequinetworking ) para que el ancho de viewA sea ​​igual a uno de ellos, por ejemplo :

 NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:viewA attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:viewB attribute:NSLayoutAttributeWidth multiplier:1.0 constant:0.0]; constraint.priority = UILayoutPriorityDefaultLow; [viewA.superview addConstraint:constraint]; 

Según la documentation de priority :

Si una restricción 'a == b' es opcional, el sistema de disposition basado en restricciones intentará minimizar 'abs (ab)'.

Por lo tanto, si viewB es más grande que viewC , esta restricción opcional será satisdate y viewA será tan amplia como viewB . Si viewB es más pequeño que viewC , el sistema de restricción viewC la restricción @"H:[viewA(>=viewC)]" , pero también minimizará los abs(ab) , haciendo que la viewA el mismo ancho que la viewC .

En la práctica, probablemente no necesite esta viewA==viewB opcional viewA==viewB , pero si quiere asegurarse de que la viewA no sea más ancha que la viewB y la viewC , agregue esta restricción opcional final.