获得焦点后,NSButton背景透明

时间:2016-03-08 12:25:01

标签: swift cocoa nsbutton

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

但是当弹出窗口获得焦点时,按钮最终会像这样: enter image description here,其中背景是透明的,并且弹出窗口下方的内容可见。

我已经尝试了以下内容,我发现它分散在网络上:

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当然是右边的那个。我只尝试使用上面的一些代码,但不幸的是,这种情况的每个变体似乎都无法修复它!

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

提前致谢!

2 个答案:

答案 0 :(得分:5)

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

appearance的{​​{1}}属性设置为NSButton。因为如果按钮没有尝试做一些奇怪的活力效果,他就不会搞砸了。标签看起来仍然一样,奇怪的效果消失了。

我在代码中的说法:

NSAppearanceNameAqua

答案 1 :(得分:1)

已更新:SWIFT 4

以下是针对NSButton进行测试的:

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