たとえば、ラベル 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 ステートメント と を使用します。viewB
viewC
@"H:[viewA(>=viewB)]"
@"H:[viewA(>=viewC)]"
viewB
A がand/orの最大幅よりも広くならないようにしたい場合は、 の幅がそれらの 1 つと等しくなるようにviewC
、オプションの制約 (つまり、 より低い優先度) を定義します。たとえば、次のようになります。UILayoutPriorityRequired
viewA
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
ようにしたい場合は、この最後のオプションの制約を追加してください。viewA
viewB
viewC