oSXでは、かなり暗い画像のNSButtonがありますが、属性インスペクターを使用して色を変更することはできません。大きな黒いボタンの画像を参照してください。テキストはGoです。
テキストの色を変更する可能性の手がかりはありますか? NSButtonクラスを調べましたが、それを行う方法はありません。白いフォントで画像を作成できることは承知していますが、それは私がやりたいことではありません。
スイスからのご挨拶、ロナルド・ホフマン---
NSColor color = NSColor.White;
NSMutableAttributedString colorTitle = new NSMutableAttributedString (cb.Cell.Title);
NSRange titleRange = new NSRange (0, (nint)cb.Cell.Title.Length);
colorTitle.AddAttribute (NSStringAttributeKey.ForegroundColor, color, titleRange);
cb.Cell.AttributedTitle = colorTitle;
ターゲットがmacOS 10.14以降の場合、NSButtonコントロールの新しいcontentTintColor
プロパティを使用して、テキストの色を設定できます。
David BoydのソリューションのSwift 4.2バージョン
extension NSButton {
func setAttributes(foreground: NSColor? = nil, fontSize: CGFloat = -1.0, alignment: NSTextAlignment? = nil) {
var attributes: [NSAttributedString.Key: Any] = [:]
if let foreground = foreground {
attributes[NSAttributedString.Key.foregroundColor] = foreground
}
if fontSize != -1 {
attributes[NSAttributedString.Key.font] = NSFont.systemFont(ofSize: fontSize)
}
if let alignment = alignment {
let paragraph = NSMutableParagraphStyle()
paragraph.alignment = alignment
attributes[NSAttributedString.Key.paragraphStyle] = paragraph
}
let attributed = NSAttributedString(string: self.title, attributes: attributes)
self.attributedTitle = attributed
}
}
上記の情報を使用して、前景色を設定するNSButton拡張機能と、システムフォントおよびテキストの配置を作成しました。
これはSwift 4.xのCocoa用ですが、iOS用に簡単に調整できます。
import Cocoa
extension NSButton {
func setAttributes(foreground: NSColor? = nil, fontSize: CGFloat = -1.0, alignment: NSTextAlignment? = nil) {
var attributes: [NSAttributedStringKey: Any] = [:]
if let foreground = foreground {
attributes[NSAttributedStringKey.foregroundColor] = foreground
}
if fontSize != -1 {
attributes[NSAttributedStringKey.font] = NSFont.systemFont(ofSize: fontSize)
}
if let alignment = alignment {
let paragraph = NSMutableParagraphStyle()
paragraph.alignment = alignment
attributes[NSAttributedStringKey.paragraphStyle] = paragraph
}
let attributed = NSAttributedString(string: self.title, attributes: attributes)
self.attributedTitle = attributed
}
}