iOS:多行 UILabel 与水平 UIStackView 中的另一个 UILabel 大小错误

Posted

技术标签:

【中文标题】iOS:多行 UILabel 与水平 UIStackView 中的另一个 UILabel 大小错误【英文标题】:iOS: Multi-line UILabel has wrong size with another UILabel in a horizontal UIStackView 【发布时间】:2015-11-18 10:22:45 【问题描述】:

我遇到了一个奇怪的问题,我怀疑这是 UILabel 中的错误,但我需要先确定这不是我的错误。

The hierarchy and the problem(s): 标题标签变小,多行,年份标签太大,即使有足够的空间。下一张图片将显示这一点。

重要的是:标题标签是多行的,其余的都是开箱即用的组件。它们的内容拥抱和压缩阻力是相同的,默认值。

two situations 不会发生这种情况。 1.如果我删除年份标签 2. 如果我将标题标签嵌入到任何类型的堆栈视图中

因此,只需执行这两个更改之一,标题标签就可以正确调整大小,这就是我怀疑这是 UIKit 错误的原因。 我尝试了我能想到的一切,包括更改内容拥抱和压缩阻力、堆栈视图对齐和分布、视图模式。

为标题标签设置 prefferedMaxLayoutWidth 不起作用,因为文本是动态的。

【问题讨论】:

你正在使用自动布局? 是的,我添加的唯一约束是大堆栈视图的顶部,前导和尾随坚持视图的边缘/边距 您提供的链接上的图像中有 4 个堆栈视图。您对哪一个应用了约束? 最上面的,包含所有元素 约束不是问题。这实际上是 UIStackView 中多行标签的错误。我自己遇到了它,并且能够很容易地重现它。最简单的解决方法是将多行标签嵌入到自身的 UIStackView 中,即使它不需要。 【参考方案1】:

确实存在一个错误,对此至少有两种解决方法:

    按照 Steven Van Impe 的建议,将多行标签嵌入另一个 UIStackView。 将其抗压强度更改为 999 或 1000。

最后,由于堆栈视图的局限性,我最好不要使用它们。也许他们会在未来的更新中变得更好。

【讨论】:

以上是关于iOS:多行 UILabel 与水平 UIStackView 中的另一个 UILabel 大小错误的主要内容,如果未能解决你的问题,请参考以下文章

斯威夫特 iOS。多行 UILabel 背景颜色跟随文本

iOS:自动布局中的多行 UILabel

iOS自动布局:将UILabel的左边缘与容器中的水平中心对齐?

iOS:动态添加多行 UILabel

iOS的UILabel设置多行显示

iOS - 带约束的多行 UILabel 高度