例えば、A、BおよびCのラベルAは、どちらの幅が広くなっている必要がありますラベルは、BまたはCビューを他の2つのビューの中で最も広いように制約を追加するにはどうすればよいですか?
視覚、
@"H:[viewA(==MAX(viewB,viewC))]"
例えば、A、BおよびCのラベルAは、どちらの幅が広くなっている必要がありますラベルは、BまたはCビューを他の2つのビューの中で最も広いように制約を追加するにはどうすればよいですか?
視覚、
@"H:[viewA(==MAX(viewB,viewC))]"
の線に沿って何かあなたは確実にしたい場合viewA
が同時に少なくともviewB
とviewC
の幅に等しい場合、別の2つのVFLステートメント@"H:[viewA(>=viewB)]"
と@"H:[viewA(>=viewC)]"
を使用します。あなたはまた、AがviewB
および/またはviewC
の最大幅よりも広くないことを確実にしたい場合は
、あなたは1に等しくなるようにviewA
の幅のために(UILayoutPriorityRequired
よりもすなわち低い優先順位)オプションの制約を定義しますそれらの、例えば:
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
のドキュメントによると:制約「== B」はオプションである場合
は、制約ベースのレイアウトシステムは、「最小化しようとしますabs(a-b) 'である。
viewB
がviewC
より大きい場合したがって、このオプションの制約が満足されるとviewA
はviewB
と同じ幅です。 viewB
がviewC
より小さい場合、制約システムは必要な@"H:[viewA(>=viewC)]"
の制約を満たしますが、も最小化し、viewA
と同じ幅をviewC
とします。
は実際には、あなたはおそらく、このオプションのviewA==viewB
制約を必要としませんが、あなたはviewA
がviewB
とviewC
の両方よりも広くないことを確実にしたい場合は、この最後のオプションの制約を追加します。
[Autolayoutの高さはMAX(複数の高さの高さ)に等しい]の複製可能性(http://stackoverflow.com/questions/17117799/autolayout-height-equal-to-maxmultiple-view-heights) –