gpt4 book ai didi

swift - 获取显示 View 中所有内容所需的高度

转载 作者:行者123 更新时间:2023-11-30 10:58:39 25 4
gpt4 key购买 nike

我有一个从具有多个 subview 的 Nib 加载的自定义 View 。其中一些 subview 包含可以是动态高度的标签。该 View 最终作为 subview 添加到 ScrollView 中的 View 中。

思考 ScrollView > View > subview >动态标签

我正在使用自动布局约束,因此需要设置显示其自身所有内容所需的 SubView 高度,以便 ScrollView 滚动显示其中所有内容所需的长度 subview 。

我知道使用 UILabel,您可以执行类似 val needLabelHeight = label.sizeThatFits(CGFloat(width: label.frame.height, height: CGFloat.greatestFiniteMagnitude)) 的操作来获取所需的高度显示在单个标签上,但是当我尝试在从 nib 加载的整个自定义 View 上执行此操作时,它只具有我的 nib 文件中的 View 的高度。

除了通过将 subview 的所有所需高度和垂直约束相加来计算 View 所需的高度之外,是否有类似的方法可以在具有更多 subview 的 View 上执行此操作?

最佳答案

这是一个简单的例子......

XIB 文件如下所示:

enter image description here

注意:底部标签对 View 底部有 >= 8 约束。这样您就不必担心 IB 在设计过程中显示错误。底部的任何额外空间将在运行时自动“消失”。

Storyboard如下所示:

enter image description here

ScrollView 有红色背景(以便于查看)。包含按钮的标签和 View 的布局和约束的设置与我们通常设置的方式相同。

“蓝色” View - TheXIB Container View - 高度约束为 120,但被设置为占位符,将在运行时删除,从而允许从 XIB 加载的 View 来控制其高度。这将是我们从 XIB 添加 Labels Holder View 的 View 。

以下是少量文本的外观:

enter image description here

它不可滚动,因为内容不足。

点击“添加”按钮几次后,它看起来像这样:

enter image description here

并且它可滚动的(我们可以看到它在此图像中向下滚动)。

对于喜欢使用“内容 View ”作为 ScrollView “根” View 的人来说,它的工作原理是相同的(橙色 View 是内容 View ,每侧插入 8 点):

enter image description here

以下是此示例项目的链接:https://github.com/DonMag/LoadXIBIntoScroll

这是一个运行中的 gif 动画:

关于swift - 获取显示 View 中所有内容所需的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53658163/

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