我在视图中的透明弹出窗口中遇到了一些无边框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当然是右边的那个。我只尝试使用上面的一些代码,但不幸的是,这种情况的每个变体似乎都无法修复它!
有没有人知道如何避免这种情况?有人知道为什么垃圾按钮没有同样的问题吗?
提前致谢!
答案 0 :(得分:5)
以下是针对NSTextField进行测试的,但也适用于按钮。
将appearance
的{{1}}属性设置为NSButton
。因为如果按钮没有尝试做一些奇怪的活力效果,他就不会搞砸了。标签看起来仍然一样,奇怪的效果消失了。
我在代码中的说法:
NSAppearanceNameAqua
答案 1 :(得分:1)
已更新:SWIFT 4
以下是针对NSButton进行测试的:
NameofButton.appearance = NSAppearance(named: NSAppearance.Name.aqua)