具有自动布局的多行UILabel,如何在不更改标签框架的情况下根据内容调整字体大小?

Posted

技术标签:

【中文标题】具有自动布局的多行UILabel,如何在不更改标签框架的情况下根据内容调整字体大小?【英文标题】:Multi-line UILabel with auto layout, how to adjust font size according to content without changing label's frame? 【发布时间】:2014-12-15 07:46:02 【问题描述】:

我有一个多行UILabel,它会在运行时显示内容,内容可能只需要1行或最多3行。

当内容较少时,我希望标签使用较大的字体,当内容较多时,我希望标签使用多行和较小的字体。

由于自动布局,我无法设置UILabel的框架,标签的框架直到运行时才知道,这样可以兼容不同的设备。

目前我将标签的行号设置为固定数字,内容多时会将内容分成多行,但内容少时,单行使用与多时一样小的字号内容。这不是最好的体验。

【问题讨论】:

如果设置行数和字体比例因子会怎样? @adnan 这就像魔术一样,通过将标签设置为多行并将字体设置为大尺寸并将自动缩小到最小字体大小设置为小尺寸,标签的内容会调整就像我想要的那样!您能否更详细地描述您的评论作为答案,以便我可以接受它作为这个问题的答案? 【参考方案1】:

设置行数和字体比例因子 0.5 或 0.75

如果您的内容很小,它将使用占用的行,字体大小将是实际大小。当您的内容增长时,这些属性将检查实际字体大小是否可以将内容调整为所有行。如果它不能以全尺寸调整,则字体将被调用以在 contentview 中调整。

【讨论】:

以上是关于具有自动布局的多行UILabel,如何在不更改标签框架的情况下根据内容调整字体大小?的主要内容,如果未能解决你的问题,请参考以下文章

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

iOS:自动布局中的多行 UILabel

如何使用自动布局调整 UILabel 宽度以适合文本?

如何使用自动布局移动标签并为更改设置动画?

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

多行 UILabel 高度,横向自动布局更高