如何根据字符串长度和标签大小调整标签的字体大小
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,如何在不更改标签框架的情况下根据内容调整字体大小?