获取字体大小
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
【讨论】:
以上是关于获取字体大小的主要内容,如果未能解决你的问题,请参考以下文章