根据子视图的高度约束设置父视图的高度约束

4

enter image description here

1) 视图A、视图B和视图C的高度和宽度相等。

2) 视图A的高度取决于标签1和标签2的高度。

3) 视图B的高度取决于标签3的高度。

4) 视图C的高度取决于标签4的高度。

5) 我想从视图A、视图B和视图C中取出最大的高度,但它们都是相等的。

6) 视图X的高度取决于(视图A、视图B和视图C)中的最大值。

如何通过自动布局实现?

提前致谢


只需创建一个父视图高度约束的出口...当您获得子视图的最大高度时,设置superview_height.constant = subview_height。 - Bhavin Bhadani
@Bhavin,感谢您的回答,但我的标签文本已经设置好了,当我尝试获取该标签的高度时,它显示错误的值。 - user2526811
1
尝试在 viewWillLayoutSubviews 中获取高度,你将得到正确的高度。 - Bhavin Bhadani
@Bhavin,有时候我还是得到错误的高度。 - user2526811
@Bhavin,我尝试通过这种方式获取标签的高度:lbl.frame.size.height 这样可以吗? - user2526811
显示剩余2条评论
1个回答

2
可以在Xib或Storyboard中轻松完成此操作。请参考所创建的约束的屏幕截图。
V1 --> 第一个视图
V2 --> 第二个视图
V3 --> 第三个视图
V1L1 --> 第一个视图的第一个标签
V1L2 --> 第一个视图的第二个标签
V2L1 --> 第二个视图的第一个标签
V3L1 --> 第三个视图的第一个标签
第一个视图的宽度约束为180,所有视图(V1、V2、V3)都具有相等的宽度和相等的高度约束。
属性检查器中将所有标签的行数设置为零,这使得标签的高度随标签文本的增加而增加。
V1、V2和V3的高度由标签内容确定。
视图的高度根据标签内容增加,并且所有视图都被赋予相等的高度,因此内容视图的高度将是max(V1.height,V2.height,V3.height)的高度。同时,V1.height = V2.height = V3.height = max(V1.height,V2.height,V3.height)。
以下是约束的清晰图像。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接