gpt4 book ai didi

ios - 如何添加约束,使一个 View 与其他两个 View 中最宽的一个一样宽?

转载 作者:可可西里 更新时间:2023-11-01 04:52:52 27 4
gpt4 key购买 nike

例如,标签 A、B 和 C。标签 A 的宽度应为 B 或 C 中较宽的一个。

在视觉上,类似

@"H:[viewA(==MAX(viewB,viewC))]"

最佳答案

如果要确保 viewA 至少同时与 viewBviewC 一样宽,则使用两个单独的 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 的文档:

If a constraint 'a == b' is optional, the constraint-based layout system will attempt to minimize 'abs(a-b)'.

因此,如果 viewB 大于 viewC,将满足此可选约束并且 viewA 将与 viewB 一样宽。如果viewB小于viewC,约束系统将满足要求的@"H:[viewA(>=viewC)]"约束,但随后也会最小化 abs(a-b),有效地使 viewAviewC 的宽度相同。

在实践中,你可能不需要这个可选的 viewA==viewB 约束,但是如果你想确保 viewA 不会比两者都宽 viewBviewC,然后添加这个最后的可选约束。

关于ios - 如何添加约束,使一个 View 与其他两个 View 中最宽的一个一样宽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17776454/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com