【问题标题】:Avoiding making a NSButton transparent / see-through when isEnabled is false (disabled)当 isEnabled 为 false(禁用)时,避免使 NSButton 透明/透明
【发布时间】:2017-02-04 10:56:32
【问题描述】:

普通的NSButton 如果被禁用,它似乎是透明的。

图片显示了一个样式为“push”的按钮

但是,我想禁用 没有透明度的按钮。

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

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

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

EDIT'textured push' 按钮看起来也是透明的:

【问题讨论】:

  • 您必须使用常规按钮吗?带纹理的圆形按钮不存在此问题。
  • @rocky 请参阅上面更新的问题:“纹理按钮”的透明度似乎稍差,但它也是透明的。
  • 啊,你是对的。我猜我看的不够仔细。对此感到抱歉。

标签: swift macos user-interface nsbutton nsbuttoncell


【解决方案1】:

如果您不需要标题,并且将提供您自己的按钮图像,您可以使用setImageDimsWhenDisabled 来禁用NSButtonCell 图像的透明度,当它被禁用时。代码如下:

[buttonCell setImageDimsWhenDisabled:NO];

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

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

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

    }
    isEnabled = !isEnabled;
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2012-12-18
    相关资源
    最近更新 更多