【问题标题】:Adjust font size to fit label height - Swift 4, Xcode 9调整字体大小以适应标签高度 - Swift 4、Xcode 9
【发布时间】: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.1label.adjustsFontSizeToFitWidth = true 缩小比例
  • @RJE 一些测试表明,如果最大字体集太大,文本会被标签高度裁剪。这是不可接受的。我回答的方法似乎在所有情况下都有效,并且尺寸与标签高度成比例。
  • @McGuile 是的,看起来不错,您的解决方案有效,但如果您将其放入 viewDidLayoutSubviews 方法或之后(testLabel.frame.height 之前将不正确,则您不必具有固定高度那),我认为adjustsFontSizeToFitWidth的问题可能与baselineAdjustment有关。 testLabel.baselineAdjustment = UIBaselineAdjustmentAlignCenters 可能有效(也可以从情节提要中设置)。所以你不必进行计算。

标签: ios swift uilabel xcode9


【解决方案1】:

回答我自己的问题。我在上面链接的帖子中找到了答案。

如果你的 UILabel 有一个固定的高度,无论是按点还是按 superview 的倍数,字体大小都可以通过一行代码设置为该高度的任何分数:

testLabel.font = testLabel.font.withSize(testLabel.frame.height * 2/3)

其中 2/3 是文本占据的标签的高度分数。

【讨论】:

    【解决方案2】:

    对此有一个简单的解决方案。 我们可以将 label 的 size default 增加到 100 并设置 label 的属性 min font size ~ 1。我不记得这个属性了。我在手机上

    【讨论】:

      【解决方案3】:

      在情节提要上设置标签,只需将字体大小设置为最大,然后在属性检查器中设置标签的属性最小字体大小,然后根据螺丝大小进行调整。

      【讨论】:

        猜你喜欢
        • 2018-10-16
        • 1970-01-01
        • 2017-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-07
        • 1970-01-01
        相关资源
        最近更新 更多