AttributedString 不适用于 UILabel

时间:2021-05-01 14:20:46

标签: swift uilabel nsattributedstring

我有以下代码,在 viewDidLoad 中运行。

    let text = "\n \t What is a Call?"

    let attributedText = NSMutableAttributedString(string: text, attributes: [NSAttributedString.Key.font: UIFont.boldSystemFont(ofSize: 30)])
    
    textLabel.attributedText = attributedText

当它运行时,标签中没有设置任何内容。但是,如果我这样设置

textLabel.text = text

我看到了属性文本?为什么前一行代码不起作用?

1 个答案:

答案 0 :(得分:2)

我尝试将您的代码添加到一个完全干净的项目中,但发现了两个潜在问题。也许你已经想到了他们两个,但我无法从你的问题中读到,所以这里是:)

行数

有点棘手,但是当您在文本中添加 \n 时,这也意味着如果您没有明确告诉您的 UILabel考虑一下,它只会显示第一行......在你的情况下是空的:)

所以,尝试添加

textLabel.numberOfLines = 0

告诉您的 UILabel 使用文本所需的尽可能多的行。

标签尺寸

我不知道您是如何设置标签的,但可能是为标签保留的尺寸太小而无法全部显示在屏幕上。您可以使用 visual debugger 检查视图层次结构,看看是否可以为您提供任何线索。

如果我将 numberOfLines 设置为 0 并向 textLabel 添加约束使其有足够的空间,我能够看到“什么是呼叫?”在我看来,这是一个光荣的 30 点粗体系统字体,所以......你很接近:)