gpt4 book ai didi

ios - 如何在 XIB 中调整 super View 's height base on subview' 的大小?

转载 作者:可可西里 更新时间:2023-11-01 03:51:50 25 4
gpt4 key购买 nike

在 xcode 6 中,我为自定义 View 创建了一个 xib(名为:ViewA,背景颜色为红色),ViewA 的 xib 的文件大小为 600*600,在 ViewA 中,我放置了一个 subview 标签 B(背景颜色为绿色)背景颜色),和 labelB 的 numberOfLines = 0,所以 labelB'height 是可变的,我希望 ViewA 的高度根据 labelB 的高度改变(例如 ViewA.bottom = labelB.bottom + 10),我已经固定了labelB 的顶部,底部,尾部,通往 ViewA,但它仍然不起作用,ViewA 的高度始终为 600,无论标签的高度是多少。我怎样才能在自动布局中实现这个目标?谢谢

enter image description here

最佳答案

使用自动布局,您需要执行以下操作:

  1. 确保您没有向任何 subview 添加固定宽度和/或高度限制(取决于您想要动态调整大小的维度)。这个想法是让每个 subview 的固有内容大小决定 subview 的高度。 UILabel 带有 4 个自动隐式约束(优先级低于 Required),它们会尝试将标签的框架保持在适合内部所有文本所需的确切大小。

  2. 确保每个标签的边与彼此及其父 View 的边严格连接(具有必需的优先级约束)。您要确保,如果您想象其中一个标签的大小在增加,这将迫使其他标签为其腾出空间,最重要的是迫使 super View 也扩大。

  3. 仅向父 View 添加约束以设置其位置,而不是大小(至少,不是针对您希望它动态调整大小的维度)。请记住,如果您正确设置了内部约束,它的大小将由所有 subview 的大小决定,因为它的边缘以某种方式连接到它们的边缘。

  4. 确保在应用任何约束之前将 View 的 translatesAutoresizingMaskIntoConstraints 属性值更改为 NO

就是这样。您不需要调用 sizeToFitsystemLayoutSizeFittingSize: 来让它工作,只需加载您的 View 并设置文本即可。系统布局引擎将为您进行计算以解决您的约束。 (如果有的话,您可能需要在 super View 上调用 setNeedsLayout...但这不是必需的。)

可以查看原答案here

关于ios - 如何在 XIB 中调整 super View 's height base on subview' 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27014273/

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