问题描述
我试图通过将字符串的第一部分设置为某种颜色,然后将第二部分设置为粗体来创建 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。
解决方法
如果您想要相同的属性,只需使用 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