获取字体大小

Posted

技术标签:

【中文标题】获取字体大小【英文标题】:Get The Font Size 【发布时间】:2016-09-17 16:31:41 【问题描述】:

我有多个UILabels。当设备尺寸发生变化时,标签的宽度和高度也会发生变化,所以我缩小文本以使其适合标签内。我想要做的是从一个标签中,并将其设置为其他标签的字体大小,以便所有内容都适合标签,但大小也相同。

这是我重新缩放文本的代码:

Name_Label.numberOfLines = 1
Name_Label.adjustsFontSizeToFitWidth = true
Name_Label.lineBreakMode = NSLineBreakMode.ByClipping

我可以得到其他答案所建议的点大小:

Year_Label.font.fontWithSize(Name_Label.font.pointSize)

但这不起作用,并且 cmets 建议这不会返回字体大小。那么如何获取一个刚刚缩小的标签的字体大小,并用它来设置其他标签的字体大小呢?

更新:当我打印以下代码时,输​​出是相同的,但在模拟器中大小不同。

Year_Label.font = Name_Label.font

【问题讨论】:

【参考方案1】:

您可以使用此类来适应标签大小。只要告诉你的标签是这个类。你也可以在那里设置它是水平检查还是垂直检查。 https://github.com/VolodymyrKhmil/BBBLibs/tree/master/BBBAutoresizedFontLabel

希望对你有帮助。

【讨论】:

对不起,那是很多代码,我正在快速工作。 你不需要粘贴它。只需将 *.h 文件导入桥接头即可。你需要做的就是告诉你的标签是这个类。就这样。真的很容易。 它仍然不起作用,我没有收到任何错误,只是大小没有改变。 它应该可以工作。我的整个项目都在上面。它会缩放你的字体以适应标签 Rect。如果它仍然不适合,则在缩放字体更改为另一个之后的某个地方。你需要找到这个地方。【参考方案2】:

经过更多研究,我发现 Swift 3 中的一个函数有效。但是,要更改大小,您必须设置最小字体比例(我忘了这样做)。以下是 Swift 2 中有效的代码:

    override func viewDidLayoutSubviews() 
    super.viewDidLayoutSubviews()

    Name_Label.numberOfLines = 1
    Name_Label.adjustsFontSizeToFitWidth = true
    Name_Label.lineBreakMode = NSLineBreakMode.ByClipping

    func adjustedFontSizeForLabel(label: UILabel) -> CGFloat 
        let text: NSMutableAttributedString = NSMutableAttributedString(attributedString: label.attributedText!)
        text.setAttributes([NSFontAttributeName: label.font], range: NSMakeRange(0, text.length))
        let context: NSStringDrawingContext = NSStringDrawingContext()
        context.minimumScaleFactor = label.minimumScaleFactor
        text.boundingRectWithSize(label.frame.size, options: NSStringDrawingOptions.UsesLineFragmentOrigin, context: context)
        let adjustedFontSize: CGFloat = label.font.pointSize * context.actualScaleFactor
        return adjustedFontSize
    


    Name_Label.font = Name_Label.font.fontWithSize(adjustedFontSizeForLabel(Name_Label))
    Year_Label.font = Year_Label.font.fontWithSize(adjustedFontSizeForLabel(Name_Label))
    House_Label.font = House_Label.font.fontWithSize(adjustedFontSizeForLabel(Name_Label))

来源链接:https://***.com/a/38568278/6421669

【讨论】:

以上是关于获取字体大小的主要内容,如果未能解决你的问题,请参考以下文章

获取字体缩放因子以计算字体大小

如何在 HTML 中获取字体大小

从自动缩小的 UILabel 中获取当前字体大小 [重复]

Qt 中如何获取系统默认字体大小?

获取字体大小

iPhone——获取 UITextField 调整后的字体大小