我想知道如何在 swift 中将标题颜色更改为 NSButton,我在 Objective-C 中看到了很多示例,但我认为 swift 中的实现是不同的,任何人都可以给我提供一个示例吗?
在
viewDidLoad
或其他地方尝试一下。
在 Swift 3 中:
let pstyle = NSMutableParagraphStyle()
pstyle.alignment = .center
button.attributedTitle = NSAttributedString(string: "Title", attributes: [ NSForegroundColorAttributeName : NSColor.red, NSParagraphStyleAttributeName : pstyle ])
斯威夫特4
我已将其添加为附加答案,因为它仅更改请求的属性,而不会覆盖或添加其他属性。
if let mutableAttributedTitle = button.attributedTitle.mutableCopy() as? NSMutableAttributedString {
mutableAttributedTitle.addAttribute(.foregroundColor, value: NSColor.white, range: NSRange(location: 0, length: mutableAttributedTitle.length))
button.attributedTitle = mutableAttributedTitle
}
在 Swift4 中
button.attributedTitle = NSMutableAttributedString(string: "Hello World", attributes: [NSAttributedStringKey.foregroundColor: NSColor.white, NSAttributedStringKey.paragraphStyle: style, NSAttributedStringKey.font: NSFont.systemFont(ofSize: 18)])
斯威夫特5
button.contentTintColor = NSColor.white
@IBOutlet weak var resendOTPButton: NSButton!
var buttonTextColorRef : NSColor = DisplayHexColorCode.whiteColor.asColor
self.resendOTPButton.setButtonTextColor(textColor: buttonTextColorRef)
func setButtonTextColor(textColor color: NSColor) {
if #available(macOS 10.14, *) {
self.contentTintColor = color
} else {
let newAttributedTitle = NSMutableAttributedString(attributedString: attributedTitle)
let range = NSRange(location: 0, length: attributedTitle.length)
newAttributedTitle.addAttributes([
.foregroundColor: color,
], range: range)
attributedTitle = newAttributedTitle
}
}