如何根据字符串长度和标签大小调整标签的字体大小

Posted

技术标签:

【中文标题】如何根据字符串长度和标签大小调整标签的字体大小【英文标题】:How to adjust font size of a label according to length of string and label size 【发布时间】:2015-01-10 13:34:31 【问题描述】:

我有一个设置大小 (300 x 300) 的多行标签。

我想根据标签文本的长度和标签的大小以编程方式调整标签的字体大小。

以下是 2 个具有不同长度文本字符串的相同大小标签的示例

【问题讨论】:

请展示您已经尝试自己解决这个问题。 您可以根据分配给标签的字符串长度更改字体大小。您有以编程方式设置字体大小的方法。 【参考方案1】:

请参阅NSString.boundingRectWithSize:options:attributes:。这里需要逐步减小字体大小,直到字符串适合原始帧。

var paragraph = NSMutableParagraphStyle()
let layout = [NSFontAttributeName:NSFont.systemFontOfSize(0), NSParagraphStyleAttributeName: paragraph, ]
paragraph.lineBreakMode = NSLineBreakMode.ByWordWrapping
var a = NSString(string: "My long text")
let rect = NSMakeSize(30, 20)
let bb = a.boundingRectWithSize(rect, options: NSStringDrawingOptions.UsesLineFragmentOrigin, attributes: layout)

将上述内容放在 Playground 中并修改 rect 和字体,看看会发生什么。

【讨论】:

【参考方案2】:

我知道这个问题很老但是....

只需使用选项 AutoShrink 并在 Attributes Inspector 中设置最小字体大小/比例,它将尽可能大地缩放字体以适应标签的大小。

【讨论】:

以上是关于如何根据字符串长度和标签大小调整标签的字体大小的主要内容,如果未能解决你的问题,请参考以下文章

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

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

使用 HTML 和 CSS 打印标签。如何根据标签的高度和宽度调整标签和容器的大小?

自动布局调整多个标签的大小

是否可以在同一个字符串上有两种字体大小(对于标签或按钮)?

根据标签长度调整从 xib 创建的视图大小