たとえば、ラベル A、B、C の場合、ラベル A の幅は、B または C のどちらか広い方の幅にする必要があります。
視覚的には、
@"H:[viewA(==MAX(viewB,viewC))]"
たとえば、ラベル A、B、C の場合、ラベル A の幅は、B または C のどちらか広い方の幅にする必要があります。
視覚的には、
@"H:[viewA(==MAX(viewB,viewC))]"
を同時に と の両方とviewA少なくとも同じ幅にしたい場合は、2 つの別個の VFL ステートメント と を使用します。viewBviewC@"H:[viewA(>=viewB)]"@"H:[viewA(>=viewC)]"
viewBA がand/orの最大幅よりも広くならないようにしたい場合は、 の幅がそれらの 1 つと等しくなるようにviewC、オプションの制約 (つまり、 より低い優先度) を定義します。たとえば、次のようになります。UILayoutPriorityRequiredviewA
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];
のドキュメントによるとpriority:
制約「a == b」がオプションの場合、制約ベースのレイアウト システムは「abs(ab)」を最小化しようとします。
したがって、viewBが より大きい場合viewC、このオプションの制約が満たされ、viewAと同じ幅になりviewBます。viewBが よりも小さい場合、viewC拘束システムは必要な拘束を満たします@"H:[viewA(>=viewC)]"が、 も最小化しabs(a-b)、事実上 とviewA同じ幅になりviewCます。
実際には、おそらくこのオプションの制約は必要ありませんが、 がとの両方より広くならないviewA==viewBようにしたい場合は、この最後のオプションの制約を追加してください。viewAviewBviewC