将 UILabel 设置为屏幕宽度和高度以适合包含的文本

Posted

技术标签:

【中文标题】将 UILabel 设置为屏幕宽度和高度以适合包含的文本【英文标题】:Setting UILabel to width of screen and height to fit contained text 【发布时间】:2014-12-06 23:33:03 【问题描述】:

我正在尝试布局我的应用程序的详细视图。该视图有一个标题、一些信息和一个描述。我想将我的标题标签和描述标签的宽度设置为屏幕的宽度和这些标签的高度以容纳标签的内容。如果内容的高度太大而无法在屏幕上显示,我还希望整个视图滚动。

我目前有一个带有视图内标签的 xib,具有自动布局约束来定位对象并将标题标签和描述标签的宽度设置为包含视图的大小。该视图位于 UIScrollView 内,但没有任何约束。我设置标签以适应属性检查器中的多行。我在 viewDidLoad 方法中使用内容和滚动视图内容大小和框架设置视图的宽度。

目前我无法将标签设置为屏幕宽度和高度以自动容纳文本。我是在正确的道路上还是我需要尝试不同的方法?

【问题讨论】:

您可以通过故事板自动布局完全完成所有任务。您需要将标签宽度设置为单元格内容视图的宽度。要使标签和单元格的动态高度需要正确设置单元格底部的约束。 【参考方案1】:

为了适应里面文字的高度,使用0作为UILabel中的行数。这将自动使它们根据里面的文字增长。您还需要从 UIScrollView 中的最后一个元素到滚动视图底部添加一个约束,以避免内容大小不明确。

要使标签成为屏幕的宽度,它应该是从标签到其容器的直接约束。但是,如果标签在滚动视图中,您可能必须将标签约束为与滚动视图具有相同的宽度,因为将标签约束到滚动视图的前缘和后缘会将其约束到滚动视图的内容视图,它根据其包含的视图增长。

【讨论】:

将行数设置为 0 有助于提高标签的高度。但是在滚动视图容器上设置宽度约束更具挑战性。我从标签前缘到容器以及后缘到容器的约束开始;但是,这并没有像预期的那样限制标签的宽度。相反,我必须将标签的宽度限制为等于包含滚动视图的宽度。这是为什么呢? 因为约束是在滚动视图的内容视图上,并且内容视图会增长到里面的大小(即使你不允许它滚动,它的溢出只是'隐藏') .

以上是关于将 UILabel 设置为屏幕宽度和高度以适合包含的文本的主要内容,如果未能解决你的问题,请参考以下文章

UILabel 不调整高度以适合文本

具有比例宽度和文本驱动高度的动态 UILabel

如何调整字体大小以适应 UILabel 的高度和宽度

当大小不成比例时如何在 UILabel 中适合文本

如何在 Flutter 中拉伸图像以适合整个背景(100% 高度 x 100% 宽度)?

如何以编程方式在 UILabel 上设置 sizeToFit 宽度和高度?