获取字体大小

Get The Font Size

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

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

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

我可以得到其他答案建议的点数:

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

但是这样不行,评论说这不是return字体大小。那么如何获取刚刚缩小的标签的字体大小,并使用它来设置其他标签的字体大小?

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

Year_Label.font = Name_Label.font

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

希望对您有所帮助。

经过更多研究,我在 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))
}

Link 来源: