【发布时间】:2018-08-04 23:50:13
【问题描述】:
我们如何增加标签的字体大小以匹配标签的高度?
在 Swift 4 或 Xcode 9 的 Storyboard 中,以编程方式或通过界面生成器。
我尝试了以下方法,一些人声称它在 Swift 3 中有效。-SO Q&A
label.minimumScaleFactor = 0.1
label.adjustsFontSizeToFitWidth = true
label.lineBreakMode = .byClipping
label.numberOfLines = 0
出于测试目的,我创建了一个标签,即屏幕宽度和屏幕高度,但字体大小保持默认大小。我还使界面生成器中的设置与上面的代码匹配,结果同样不成功。
【问题讨论】:
-
如果您尝试放大字体,系统不会为您执行此操作。您链接到的问答提供了一个计算放大(stackoverflow.com/a/17622215/6875565)的示例,但您必须实施它。
-
将标签字体大小设置为最大。不确定最大是多少,但试试 1000。然后使用
label.minimumScaleFactor = 0.1和label.adjustsFontSizeToFitWidth = true缩小比例 -
@RJE 一些测试表明,如果最大字体集太大,文本会被标签高度裁剪。这是不可接受的。我回答的方法似乎在所有情况下都有效,并且尺寸与标签高度成比例。
-
@McGuile 是的,看起来不错,您的解决方案有效,但如果您将其放入
viewDidLayoutSubviews方法或之后(testLabel.frame.height之前将不正确,则您不必具有固定高度那),我认为adjustsFontSizeToFitWidth的问题可能与baselineAdjustment有关。testLabel.baselineAdjustment = UIBaselineAdjustmentAlignCenters可能有效(也可以从情节提要中设置)。所以你不必进行计算。