从NSVisualEffectView活力中选择退出无边界NSButton

bee*_*eeb 5 macos cocoa nsbutton nsvisualeffectview

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

根据NSVisualEffectView类引用中的建议,我尝试做的是将我的NSButton包装在另一个NSVisualEffectView中,并将其状态设置为Inactive.这样做是用浅灰色背景取代"充满活力"的背景.

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

在此输入图像描述

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

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

bee*_*eeb 4

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

在斯威夫特中:

override var allowsVibrancy: Bool { return false }
Run Code Online (Sandbox Code Playgroud)