我正在尝试创建一个带有文本的标签,并在其前面添加一个图标。但不幸的是,我无法仅更改图标的颜色,它始终带有默认颜色。
这是我的方法:
var titleStringAttribute = NSMutableAttributedString(string: "")
var iconAttachment = NSTextAttachment(image: UIImage(systemName: "trash")!)
iconAttachment.image?.withTintColor(.red, renderingMode: .alwaysTemplate) // Does not work?!
titleStringAttribute.append(NSAttributedString(attachment: iconAttachment))
// Appending bold text to attributedText
theLabel.attributedText = titleStringAttribute
我也研究了互联网上的stackoverflow和其他网站,但没有任何帮助。我正在使用iOS 13.5。
感谢您的回答!
withTintColor(_:renderingMode:)
不会change您所调用的图像。它所做的全部返回一个new UIImage
供您使用,但您没有使用它。
将您的代码更新为可正常运行:
let titleStringAttribute = NSMutableAttributedString(string: "")
let trashImage = UIImage(systemName: "trash")!
let redTrashImage = trashImage.withTintColor(.red, renderingMode: .alwaysTemplate)
let iconAttachment = NSTextAttachment(image: redTrashImage)
titleStringAttribute.append(NSAttributedString(attachment: iconAttachment))
// Appending bold text to attributedText
theLabel.attributedText = titleStringAttribute