获取字体大小

时间:2016-09-17 16:31:41

标签: ios swift2 uilabel swift3 uifont

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

这是我重新调整文字的代码:

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

我可以像其他答案所暗示的那样得到磅值:

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

但这不起作用,评论表明这不会返回字体大小。那么如何获得刚刚缩小的标签的字体大小,并使用它来设置其他标签的字体大小?

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

Year_Label.font = Name_Label.font

2 个答案:

答案 0 :(得分:0)

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

希望它有所帮助。

答案 1 :(得分:0)

经过更多的研究,我在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://stackoverflow.com/a/38568278/6421669