从 NSVisualEffectView 活力中选择退出无边界 NSButton
Opt-out borderless NSButton from NSVisualEffectView vibrancy
我有一个充满活力的 NSVisualEffectView,其中包含文本字段(NSTextField 或 NSComboBox)和无边框按钮。这些按钮位于文本字段上方,我想禁用无边框按钮的活力效果,因为它们应该出现在文本字段的白色背景上。
根据 NSVisualEffectView class 参考中的建议,我尝试做的是将我的 NSButton 包装在另一个 NSVisualEffectView 中,并将其状态设置为 Inactive。它的作用是将 "vibrant" 背景替换为浅灰色背景。
下图说明了这一点。第一个字段是我尝试的解决方案,第二个字段显示无边框按钮作为 NSVisualEffectView 的子项的默认行为。
我也试过 subclass NSButton 并将其单元格背景颜色设置为白色或透明,但我总是得到灰色背景。
如何将浅灰色背景更改为白色或透明背景?
谢谢
经过几个小时的头痛,我设法自己解决了这个问题。该解决方案不需要将按钮包装在 NSVisualEffectView 中。简单地继承 NSButton 并覆盖 allowsVibrancy
属性 并将其设置为 false
就足够了。
在Swift中:
override var allowsVibrancy: Bool { return false }
我有一个充满活力的 NSVisualEffectView,其中包含文本字段(NSTextField 或 NSComboBox)和无边框按钮。这些按钮位于文本字段上方,我想禁用无边框按钮的活力效果,因为它们应该出现在文本字段的白色背景上。
根据 NSVisualEffectView class 参考中的建议,我尝试做的是将我的 NSButton 包装在另一个 NSVisualEffectView 中,并将其状态设置为 Inactive。它的作用是将 "vibrant" 背景替换为浅灰色背景。
下图说明了这一点。第一个字段是我尝试的解决方案,第二个字段显示无边框按钮作为 NSVisualEffectView 的子项的默认行为。
我也试过 subclass NSButton 并将其单元格背景颜色设置为白色或透明,但我总是得到灰色背景。
如何将浅灰色背景更改为白色或透明背景? 谢谢
经过几个小时的头痛,我设法自己解决了这个问题。该解决方案不需要将按钮包装在 NSVisualEffectView 中。简单地继承 NSButton 并覆盖 allowsVibrancy
属性 并将其设置为 false
就足够了。
在Swift中:
override var allowsVibrancy: Bool { return false }