如何强制调整标签大小且为多行的UILabel自动换行

时间:2019-06-20 10:13:29

标签: ios uikit uilabel line-breaks multiline

我面临的问题是,尽管我正在使用自动换行,UILabel会在单词中间断行。

您可以创建一个新项目并替换视图控制器的内容以查看结果:

override func viewDidLoad() {
    super.viewDidLoad()

    let label = UILabel(frame: CGRect(x: 0.0, y: 0.0, width: 100.0, height: 100.0))
    label.center = CGPoint(x: view.frame.midX, y: view.bounds.midY)
    label.numberOfLines = 2 // Setting this to 1 produces expected result
    label.lineBreakMode = .byWordWrapping
    label.adjustsFontSizeToFitWidth = true
    label.minimumScaleFactor = 0.5
    view.addSubview(label)

    label.text = "Singlewordtext"
    label.backgroundColor = .red
}

这将产生两行文字,该文字在单词中间被打断。这种情况自然发生的原因是,单词本身比标签本身宽,因此很有意义(我想)。但我希望它在使用之前先使用adjustsFontSizeToFitWidthminimumScaleFactor。如果将其设置为单行(label.numberOfLines = 1),则会得到预期的结果,即文本将缩小而不是折断。请注意,在这种情况下,这样做会适合标签内的所有文本。

问题是,UILabel上是否有配置可以防止这种情况下的换行?还是有其他一些优雅的解决方案?

当前结果:

Current result

所需结果(使用label.numberOfLines = 1产生):

Desired result

请注意,我仍然需要启用2行才能很好地显示例如label.text = "Three words fit"

Expected result with 2 lines

0 个答案:

没有答案