获取字体大小
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 来源:
我有多个 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 来源: