Wenn Sie sicherstellen möchten, dass viewA
gleichzeitig mindestens so breit wie viewB
und viewC
ist, verwenden Sie dann zwei separate VFL-Anweisungen, @"H:[viewA(>=viewB)]"
und @"H:[viewA(>=viewC)]"
.
Wenn Sie wollen auch sicherstellen, dass A als die maximale Breite von viewB
und/oder viewC
nicht breiter sein wird, würden Sie eine optionale Einschränkung (dh niedrigere Priorität als UILayoutPriorityRequired
) für die Breite der viewA
, um gleich einen definieren von ihnen, zum Beispiel:
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];
Gemäß der Dokumentation für priority
:
Wenn eine Einschränkung 'a == b' ist optional, das Constraint-basierte Layout-System wird versuchen, "zu minimieren abs (a-b) ".
Wenn also viewB
größer als viewC
ist, diese optionale Einschränkung wird erfüllt und viewA
wird so breit wie viewB
sein. Wenn viewB
kleiner als viewC
ist, erfüllt das Einschränkungssystem die erforderliche @"H:[viewA(>=viewC)]"
-Einschränkung, minimiert dann aber auch die abs(a-b)
und macht viewA
genauso breit wie viewC
.
In der Praxis werden Sie wahrscheinlich nicht brauchen, diese optionale viewA==viewB
Einschränkung, aber wenn Sie sicherstellen wollen, dass viewA
nicht breiter sein sowohl als viewB
und viewC
, dann diese letzte optionale Einschränkung hinzufügen.
mögliches Duplikat von [Höhe des Autlayouts gleich MAX (mehrere Ansichtshöhen)] (http://stackoverflow.com/questions/17117799/autolayout-height-equal-to-maxmultiple-view-heights) –