例如,标签A,B和C。标签A的宽度应为B或C中较大的一个。
从视觉上看,
@"H:[viewA(==MAX(viewB,viewC))]"
最佳答案
如果要确保viewA
同时至少与viewB
和viewC
一样宽,请使用两个单独的VFL语句@"H:[viewA(>=viewB)]"
和@"H:[viewA(>=viewC)]"
。
如果还希望确保A的宽度不超过viewB
和/或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
的文档:因此,如果
viewB
大于viewC
,则将满足此可选约束,并且viewA
的宽度将与viewB
相同。如果viewB
小于viewC
,则约束系统将满足所需的@"H:[viewA(>=viewC)]"
约束,但同时也将abs(a-b)
最小化,从而有效地使viewA
与viewC
的宽度相同。实际上,您可能不需要此可选的
viewA==viewB
约束,但如果要确保viewA
的宽度不超过viewB
和viewC
的宽度,请添加此最终的可选约束。关于ios - 如何添加约束以使一个 View 与其他两个 View 中的最大一样宽?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17776454/