iOS 自动布局 UILabel 换行

Posted

技术标签:

【中文标题】iOS 自动布局 UILabel 换行【英文标题】:iOS Auto-Layout UILabel wrapping 【发布时间】:2017-01-05 14:55:02 【问题描述】:

我正试图让我的字幕标签换行,但它总是保留一行,并带有截断的文本。我有它,所以字幕对标题/登录标签有 5px 的顶部约束,对分隔符有 20px 的顶部约束。

我一直在研究 Content Hugging 和 Compression Resistance 但我无法弄清楚。

如果我删除底部约束,标签会根据需要变为 3 行,但会与分隔符重叠(即内容不会被下推)。

任何帮助将不胜感激。

【问题讨论】:

属性检查器中有哪些行数和换行样式? 我有 "numberOfLines = 0" && "line break style = Truncate Tail" 您需要将换行样式更改为自动换行 将其更改为自动换行仍显示为 1 行,内容未下推,标签的其余部分(即第 2-3 行)被剪裁 它被推下,但你不会看到它,因为约束的优先级大于标签的内容拥抱优先级,并且标签的框架保持不变。 【参考方案1】:

将行设置为 0。然后放大标签以适应所需的代码行,即增加故事板上标签的高度。然后将 pin 菜单中标签的高度约束设置为该高度。

【讨论】:

由于视图非常复杂(即有很多元素),这需要我将所有内容向下移动...是/否? 让底部约束保持原样,只需将高度设置为容纳 3 行,例如将其设置为 60,然后单击更新帧 标记为正确答案,因为它可能是其他不知道numberOfLines 的人的解决方案。不过,我确实在我的场景中设置了它。 #RestartXcode【参考方案2】:

所以,自动更新我的项目设置并重新启动 Xcode/Simulator 与它有关!

现在似乎一切正常(字幕设置如下):

内容拥抱已设置为:h=251 & v=251

内容压缩阻力已设置为:h=750 & v=750

行数已设置为:0

换行模式已设置为:Truncate Tail

“底部空间到分隔符”约束已设置为:等于 20

“登录标签的顶部空间”约束已设置为:等于 5

【讨论】:

以上是关于iOS 自动布局 UILabel 换行的主要内容,如果未能解决你的问题,请参考以下文章

ios自动布局标签定位

自动布局和 UILabel 的问题

如何使用自动布局在 iOS 中根据文本长度更改 UILabel 宽度

iOS:多行 uilabel 仅显示带有自动布局的一行

ios 6:使用自动布局约束垂直居中 UILabel

无法在具有动态宽度的 Tablecell 中并排自动布局两个 UILabel