当isEnabled为false时,避免使NSButton透明/透明(禁用)

时间:2017-02-04 10:56:33

标签: swift macos user-interface nsbutton nsbuttoncell

常规NSButton如果被禁用则似乎是透明的。

enter image description here

图片显示了一个带有样式按钮'

的按钮

但是,我想要禁用Button 而不用透明度。

我尝试以编程方式将alphaValue设置为1.0,但似乎NSButtons cell(controlView)以及所有其他子视图的alphaValue值已经为1.0。

此外,我可以像在iOS中一样使用userInteractionEnabledadjustsImageWhenDisabled(两者都推荐here)。

如何在没有标准透明度的情况下禁用NSButton?

编辑'纹理推送' 按钮似乎是透明的: enter image description here

1 个答案:

答案 0 :(得分:0)

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

[buttonCell setImageDimsWhenDisabled:NO];

NSButtonCellNSButton的子视图。但正如我所说,标题仍将“暗淡”一点,以及它的背景。但由于图像如果在背景之上,您将看不到透明背景。

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

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

    }
    isEnabled = !isEnabled;
}

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