web-dev-qa-db-ja.com

NSButtonテキストに色を付ける方法

oSXでは、かなり暗い画像のNSButtonがありますが、属性インスペクターを使用して色を変更することはできません。大きな黒いボタンの画像を参照してください。テキストはGoです。

enter image description here

テキストの色を変更する可能性の手がかりはありますか? NSButtonクラスを調べましたが、それを行う方法はありません。白いフォントで画像を作成できることは承知していますが、それは私がやりたいことではありません。

スイスからのご挨拶、ロナルド・ホフマン---

31
Ronald Hofmann
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;  
1
kumar

ターゲットがmacOS 10.14以降の場合、NSButtonコントロールの新しいcontentTintColorプロパティを使用して、テキストの色を設定できます。

1
Ely

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
}

}

0
Morten J

上記の情報を使用して、前景色を設定する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
    }
}
0
David Boyd