我有多个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
答案 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))
}