如何为禁用的NSButton设置标题颜色?(OS X)

时间:2016-05-17 15:51:23

标签: swift macos cocoa swift2

我知道我们可以使用这样的属性字符串为按钮设置彩色标题:

let style = NSMutableParagraphStyle()
style.alignment = .Center
button.attributedTitle = NSAttributedString(string: "title",
             attributes: [ NSForegroundColorAttributeName : NSColor.redColor(),
                    NSParagraphStyleAttributeName : style])

事实上,我是如何获得红色标题的,但它对禁用模式下的标题颜色没有影响(它始终是灰色的);我想为了设置它,我必须创建一个NSButton类的实例并覆盖它与标题颜色相关的一些方法或覆盖它的一些属性以禁用用户交互(必要时)而不是禁用按钮,但我不知道如何。

这个问题hereherehere有一些可能的客观C答案。

2 个答案:

答案 0 :(得分:0)

你是否需要通过它的定义来禁用它在触摸时不做任何事情?

如果是这样,只需在按钮单击功能中有一个标志。因此,按钮颜色在禁用时可能是红色(示例),但您可以单击它但没有任何反应。然后,如果它是绿色的(例子),那么它将允许它做某事。

您的标志可以是通过if语句检查的按钮的颜色,也可以设置实际变量。

答案 1 :(得分:0)

创建一个NSButtonCell子类并将其分配给IB中的CELL(而不是按钮)。

然后实施

func drawTitle(_ title: NSAttributedString, 
 withFrame frame: NSRect, 
        in controlView: NSView) -> NSRect

并为isEnabled或!isEnabled返回不同的attributionString。

您也可以在

中设置初始的attributionTitle
init (id)

编辑:仅当setWantsLayers为false时才有效