【问题标题】:Why doesn't the .foregroundColor attribute apply in an NSMutableAttributedString?为什么 .foregroundColor 属性不适用于 NSMutableAttributedString?
【发布时间】:2021-02-05 17:18:40
【问题描述】:

我试图通过将字符串的第一部分设置为某种颜色然后将第二部分加粗来创建 NSMutableAttributedString。到目前为止,这是我尝试过的:

let attributedText = NSMutableAttributedString(string: String.init(format: "#%@ : ", "Field Name"),
                                               attributes: [.foregroundColor: UIColor.gray])
attributedText.append(NSMutableAttributedString(string: String.init(format: "%@", "Sample Field"),
                                         attributes: [.font: UIFont.boldSystemFont(ofSize: 16)]))
myLabel.attributedText = attributedText

这里发生的是第二部分成功加粗,但我在第一部分应用的颜色没有得到反映。我这里有什么遗漏吗?

我的环境在 Xcode 12.2 中运行 Swift 5。

【问题讨论】:

  • attributedText(NSMutableAttributedString...(append() 没有?

标签: ios swift uikit nsattributedstring


【解决方案1】:

如果您想要相同的属性,只需使用 var 来保留对它们的引用,更改字体属性并在附加新字符串时使用它

let label = UILabel(frame: .init(origin: .zero, size: .init(width: 250, height: 50)))
var attr:  [NSAttributedString.Key: Any] = [.foregroundColor: UIColor.gray]

let attributedText = NSMutableAttributedString(string: .init(format: "#%@ : ", "Field Name"), attributes: attr)
attr[.font] = UIFont.boldSystemFont(ofSize: 16)
attributedText.append(.init(string: .init(format: "%@", "Sample Field"), attributes: attr))

label.attributedText = attributedText
label

【讨论】:

    猜你喜欢
    • 2020-03-09
    • 1970-01-01
    • 2022-08-07
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 2010-09-30
    相关资源
    最近更新 更多