【问题标题】:拆分字符串会截断 UILabel 中的单词
【发布时间】:2025-12-22 06:25:15
【问题描述】:

我尝试使用UIImageUILabel 设置自定义按钮

设置约束后,我开始测试这个按钮并注意到奇怪的行为

UILabelUIButton 代码中:

private var title: UILabel = {
    var label = UILabel()
    label.translatesAutoresizingMaskIntoConstraints = false

    label.font = UIFont.boldSystemFont(ofSize: 14)
    label.numberOfLines = 0
    label.adjustsFontSizeToFitWidth = true
    label.minimumScaleFactor = 0.5

    return label
}()

当我设置标题时,例如 "Hfpdktxtybz"UILabel 效果惊人!

一个词占一行:

但如果我尝试设置标题,例如"Развлечения"UILabel 会截断单词。

一个单词分成两行:

为什么英语标签工作正确,但俄语会截断单词?如何解决? 字符数相同

【问题讨论】:

  • 如果您想要 1 行,请考虑更改 label.numberOfLines = 0。也许由于某种原因,您添加的俄语单词的宽度更大,因此有 2 行。我猜宽度也与字体有关。也看看这个graphicdesign.stackexchange.com/questions/13148/…
  • 我在您的示例中看不到任何截断。也许你的意思是别的?

标签: ios swift uilabel


【解决方案1】:

如果你使用故事板





如果您以编程方式使用 swift。

label.numberOfLines = 2




【讨论】:

    【解决方案2】:

    问题在于,正如 cmets 中所说,字符不一定具有相同的宽度。

    • 会的
    • AAAAA
    • 啊啊啊

    上面的例子清楚地显示了字符的宽度不同,尽管它们具有相同的字符数。 所以 Autolayout 计算 UILabel 实际宽度,它只有一个选项来满足您的约束。也就是分成两行。

    如果您不希望发生这种情况,请考虑更改 UILabel 优先级 numberOfLines

    【讨论】:

    • 更改numberOfLines = 3 这解决了问题。谢谢。