无论文本如何,UILabel 都会将高度调整为 0

Posted

技术标签:

【中文标题】无论文本如何,UILabel 都会将高度调整为 0【英文标题】:UILabel keeps resizing to a height of 0 regardless of the text 【发布时间】:2016-05-25 02:18:59 【问题描述】:

我有一个具有以下约束的 UILabel

我将行数设置为 0。IB 上的布局如下所示。我希望这个 UILabel 根据我收到的文本动态扩展,其中它下面的视图根据 UILabel 的高度被向下推。然而,事实并非如此。

如下所示,UILabel 根本没有出现。无论我将文本设置为什么,它的高度似乎都是 0。有谁知道我需要修改什么才能做到这一点?有谁知道为什么 UILabel 的高度为 0?

更新:

给定下面的 cmets,我尝试过的事情。

    自动换行,没有任何改变

    在UILabel上添加高度限制,文本在第一行后被截断

    大于等于常量的高度约束,第一行后文字仍然被截断

【问题讨论】:

【参考方案1】:

我根据您的要求创建了一个虚拟视图。

    按钮具有固定约束:前导宽度、高度、顶部空间。

    对于标签:前导、尾随、topSpace 到按钮

3.对于标签下方的视图:为标签提供前导、尾随、高度、顶部空间

    所以这里的标签高度不是固定的。所以它会根据文本而改变。

【讨论】:

嗯,我刚试过,但没有用。上面的按钮有固定约束,UILabel 有前导、尾随和顶部到按钮约束,标签下面的 UIView 有前导、尾随、固定高度和顶部到 UILabel。 UILabel 的行数设置为 0,我也将其设置为自动换行。我遵循了上面列出的所有步骤,但它仍然对我不起作用。文本在第一行之后被截断。 @user2492566 :你能给出视图控制器的完整图像吗?该图像下方是否还有其他视图 我更新了屏幕截图以包含视图控制器中的所有内容。这些是 UILabel 下方的一堆其他视图。如果您还需要什么,请告诉我 @user2492566 :我可能认为 UILabel 下面的视图约束存在问题。是不是图像视图的高度是固定的 红色视图具有固定高度,但下方的图像视图没有固定高度。我希望它们根据标签高度增加后剩余的空间来动态扩展或收缩【参考方案2】:

在标签中设置文本后尝试“labelName.sizeToFit()”,这将自动调整标签的高度。

【讨论】:

【参考方案3】:

您应该尝试为您的标签设置height 约束。

【讨论】:

我试过了,但是第一行之后文字被截断了 因此您希望标签根据行数动态调整大小。设置好标签后可以拨打sizeToFit【参考方案4】:

考虑到您提供的信息,它似乎没有足够的高度,因为您正在对其下方的视图使用底部约束。重新排列约束或为 UILabel 提供高度约束。

【讨论】:

我尝试在标签上添加高度约束,但这只会让它显示文本的第一行。你建议我如何重新安排约束? 如果您想要多行并自动调整大小,则不应为标签指定高度或底部约束。我建议创建一个空的故事板,并首先通过添加前导、尾随和顶部约束来使标签按您想要的方式工作,检查它是否正常工作,然后添加其他元素而不给您的标签提供高度或底部约束。【参考方案5】:

选择UILabel,设置换行方式为自动换行,设置行数为0,示例如下,

并设置Height Constraints,如果设置了height Constraints,则选择UILabel,见右侧,选择show size Inspector --> 双击height Contraints --> Relation --> 设置大于或等于,标签自动展开,示例如下,

希望对你有帮助

【讨论】:

我刚刚尝试了换行,行等于 0,并添加了大于或等于的高度约束,现在只显示第一行文本。所以它仍然被切断,但我不明白为什么,因为高度大于或等于。因此,如果有更多文本,它应该会扩展。

以上是关于无论文本如何,UILabel 都会将高度调整为 0的主要内容,如果未能解决你的问题,请参考以下文章

调整 UILabel 的大小以适应自定义 UITableViewCell 中的文本,无论宽度如何

Swift - UILabel 自动调整为文本长度

如何根据标签可用的高度调整 UILabel 字体大小

UILabel 不调整高度以适合文本

根据文本调整 UILabel 高度

根据 Swift 中的 UILabel 文本调整 UIView 高度