为什么 .foregroundColor 属性不适用于 NSMutableAttributedString?
Why doesn't the .foregroundColor attribute apply in an NSMutableAttributedString?
我正在尝试通过将字符串的第一部分设置为特定颜色然后将第二部分设置为粗体来创建 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
这里发生的是第二部分成功加粗,但我在第一部分中应用的颜色没有得到反映。我在这里遗漏了什么吗?
我的环境是 运行 Swift 5 in Xcode 12.2.
如果您想要相同的属性,只需使用 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
我正在尝试通过将字符串的第一部分设置为特定颜色然后将第二部分设置为粗体来创建 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
这里发生的是第二部分成功加粗,但我在第一部分中应用的颜色没有得到反映。我在这里遗漏了什么吗?
我的环境是 运行 Swift 5 in Xcode 12.2.
如果您想要相同的属性,只需使用 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