例如,标签 A、B 和 C。标签 A 的宽度应为 B 或 C 中较宽的宽度。
在视觉上,类似于
@"H:[viewA(==MAX(viewB,viewC))]"
例如,标签 A、B 和 C。标签 A 的宽度应为 B 或 C 中较宽的宽度。
在视觉上,类似于
@"H:[viewA(==MAX(viewB,viewC))]"
如果要确保viewA
同时至少与 and 一样宽viewB
,viewC
则使用两个单独的 VFL 语句,@"H:[viewA(>=viewB)]"
and @"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
:
如果约束“a == b”是可选的,则基于约束的布局系统将尝试最小化“abs(ab)”。
因此,如果viewB
大于viewC
,则将满足此可选约束并且viewA
将与 一样宽viewB
。如果viewB
小于viewC
,则约束系统将满足所需的@"H:[viewA(>=viewC)]"
约束,但也会最小化abs(a-b)
,有效地使viewA
宽度与 相同viewC
。
在实践中,您可能不需要此可选viewA==viewB
约束,但如果您想确保viewA
不会比viewB
and更宽viewC
,则添加此最终可选约束。