获得焦点后NSButton背景透明

NSButton background transparent after getting focus

我在透明弹出窗口的视图中遇到一些无边框 NSButton 问题。首次打开弹出窗口时,按钮看起来完全正常,但是当弹出窗口(或其中的视图)获得焦点时,背景变得透明。 第一次打开时,它看起来像这样(应该如此):

但是当弹出窗口获得焦点时,按钮最终会变成这样: ,其中背景是透明的,弹出窗口下方的内容是可见的。

我已经尝试了以下散布在网络上的方法:

optionsButton.setButtonType(.MomentaryChangeButton)

optionsButton.cell?.showsFirstResponder = false

let bColor = NSColor(red: 230.0/255.0, green: 230.0/255.0, blue: 230.0/255.0, alpha: 1.0)
(optionsButton.cell as! NSButtonCell).backgroundColor = bColor
optionsButton.layer?.backgroundColor = bColor.CGColor

(optionsButton.cell as! NSButtonCell).showsStateBy = .PushInCellMask
(optionsButton.cell as! NSButtonCell).highlightsBy = .ContentsCellMask

optionsButton当然是右边那个。我只尝试使用上面的一些代码,但不幸的是,它的每个变体似乎都无法修复它!

有人知道如何避免这种情况吗?有人知道为什么垃圾桶按钮没有同样的问题吗?

提前致谢!

以下针对 NSTextField 进行了测试,但也适用于按钮。

NSButtonappearance 属性 设置为 NSAppearanceNameAqua。因为如果按钮不尝试做一些奇怪的活力效果,他就不会把事情搞砸。标签看起来还是一样,奇怪的效果消失了。

我在代码中的话:

self.button.appearance = [NSAppearance appearanceNamed:NSAppearanceNameAqua];

更新:SWIFT 4

以下针对 NSButton 进行了测试:

NameofButton.appearance = NSAppearance(named: NSAppearance.Name.aqua)