5

我有一个充满活力的 NSVisualEffectView,其中包含文本字段(NSTextField 或 NSComboBox)和无边框按钮。这些按钮位于文本字段上方,我想禁用无边框按钮的活力效果,因为它们应该出现在文本字段的白色背景上。

根据 NSVisualEffectView 类参考中的建议,我尝试做的是将我的 NSButton 包装在另一个 NSVisualEffectView 中,并将其状态设置为 Inactive。这样做是用浅灰色背景替换“充满活力”的背景。

下图说明了这一点。第一个字段是我尝试的解决方案,第二个字段显示无边框按钮的默认行为作为 NSVisualEffectView 的子项。

在此处输入图像描述

我还尝试将 NSButton 子类化并将其单元格背景颜色设置为白色或透明,但我总是得到灰色背景。

如何将浅灰色背景更改为白色或透明背景?谢谢

4

1 回答 1

4

经过几个小时的头痛,我设法自己解决了这个问题。该解决方案不需要将按钮包装在 NSVisualEffectView 中。简单地继承 NSButton 并覆盖该allowsVibrancy属性并将其设置为false就足够了。

在斯威夫特:

override var allowsVibrancy: Bool { return false }
于 2015-11-02T09:47:57.857 回答