2017-02-04 111 views
2

如果禁用,则常规NSButton似乎是透明的。isEnabled时避免使NSButton透明/透视为false(禁用)

enter image description here

图像显示与风格 '推'

不过,我想禁用按钮透明的按钮。

我试图以编程方式设置alphaValue1.0但似乎NSButtons cell(controlView)以及所有其它子视图已经在1.0的alphaValue。

此外,没有什么像userInteractionEnabledadjustsImageWhenDisabled(都推荐here)我可以在iOS中使用。

如何禁用没有标准透明度的NSButton?

编辑:另外一个“纹理推”按钮看起来是透明的: enter image description here

+0

您是否需要使用常规按钮?纹理圆角按钮不存在此问题。 – rocky

+0

@rocky查看我上面更新的问题:看起来“纹理推送”按钮的透明度稍差,但也是透明的。 – ixany

+0

啊,你是对的。我想我看起来不够努力。对于那个很抱歉。 – rocky

回答

0

如果您不需要标题,并会提供你自己的按钮图像,可以使用setImageDimsWhenDisabled来禁用时,在NSButtonCell的图像中禁用透明度。下面是代码:

[buttonCell setImageDimsWhenDisabled:NO]; 

NSButtonCellNSButton子视图。但正如我所说,标题仍然会“黯淡”一点,也是它的背景。但是,如果在背景之上,则图像不会显示透明背景。

另一种方法(避免NSButton的子类)是让你自己的按钮状态跟踪变量。当状态被禁用时,关闭任何点击事件。代码示例框架如下:

- (IBAction)clickOnButton { 
    static BOOL isEnabled = YES; 
    if (isEnabled) { 
     // Handle click event here... 

    } 
    isEnabled = !isEnabled; 
} 

这可能会在点击时显示高亮显示。您也可以禁用高亮显示。但如果你有很多按钮,这不是一个好主意。如果你有很多按钮,NSButton的子类是最好的选择。