【问题标题】:Unexpected behavior for adjustsFontSizeToFitWidthadjustsFontSizeToFitWidth 的意外行为
【发布时间】:2018-11-02 21:49:12
【问题描述】:

我想知道为什么当numberOfLines 设置为 1 时,我的 UILabel 没有正确调整字体大小。我用下面的代码设置了一个游乐场:

import UIKit
import PlaygroundSupport

let labelFrame = CGRect(x: 0, y: 0, width: 100, height: 100)
let label = UILabel(frame: labelFrame)
label.backgroundColor = .lightGray
label.text = "Something that's pretty long"

label.baselineAdjustment = .alignCenters
label.adjustsFontSizeToFitWidth = true

label.numberOfLines = 1
label.minimumScaleFactor = 0.1

let frame = CGRect(x: 0, y: 0, width: 300, height: 300)
let view = UIView(frame: frame)
view.backgroundColor = .white

view.addSubview(label)

PlaygroundPage.current.liveView = view

这就是结果

但是,当我将 numberOfLines 更改为 2 时,字体会像我预期的那样缩小:

import UIKit
import PlaygroundSupport

let labelFrame = CGRect(x: 0, y: 0, width: 100, height: 100)
let label = UILabel(frame: labelFrame)
label.backgroundColor = .lightGray
label.text = "Something that's pretty long"

label.baselineAdjustment = .alignCenters
label.adjustsFontSizeToFitWidth = true

label.numberOfLines = 2   // <<<<<< this is the only change
label.minimumScaleFactor = 0.1

let frame = CGRect(x: 0, y: 0, width: 300, height: 300)
let view = UIView(frame: frame)
view.backgroundColor = .white

view.addSubview(label)

PlaygroundPage.current.liveView = view

结果如下:

这里发生了什么?这是一个错误还是我做错了什么?

【问题讨论】:

    标签: ios swift uikit uilabel


    【解决方案1】:

    嗯,看起来这只是 Playgrounds 中的一个错误。如果我添加这一行

    label.lineBreakMode = .byTruncatingMiddle
    

    一切都按预期进行。实际上,这些工作中的任何一个:

    label.lineBreakMode = .byCharWrapping
    label.lineBreakMode = .byClipping
    label.lineBreakMode = .byTruncatingHead
    label.lineBreakMode = .byTruncatingMiddle
    label.lineBreakMode = .byWordWrapping
    

    不起作用的(也是默认的)是

    label.lineBreakMode = .byTruncatingTail
    

    当我在一个真实的模拟器中尝试这个时,一切看起来都很好,所以我假设我只是遇到了一个 Playgrounds 错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-04
      • 2016-07-16
      • 2016-05-10
      • 2020-07-23
      • 2021-08-23
      • 2021-11-16
      • 2017-10-20
      • 2016-06-29
      相关资源
      最近更新 更多