我目前正在尝试减少在Mac OS中添加到NSStatusBarItems图标的默认振动度。我知道可以通过更改allowVibrancy属性来实现。但是,由于这在NSView上是只读的,因此我需要扩展该类并重写allowVibrancy方法。
class NoneVibrancyView: NSView
{
override var allowsVibrancy: Bool { return false }
}
目前,我的图标仍看起来像allowVibrancy已激活。我想知道我是否正确替换了我的NSView。这是我的代码:
let statusBar = NSStatusBar.system
statusBarItem = statusBar.statusItem(withLength: NSStatusItem.squareLength)
let noneVibrancyView = NoneVibrancyView(frame: statusBarItem.button!.frame)
statusBarItem.button?.addSubview(noneVibrancyView)
statusBarItem.button?.title = "????"
let statusBarMenu = NSMenu(title: "My Status Menu Bar")
statusBarItem.menu = statusBarMenu
子视图的振动性将被其父级的振动性所覆盖。因此,需要设置自定义视图的父级状态栏按钮的亮度(由于addSubview()
)。
由于状态项的按钮是自动生成的,因此您可能需要使用扩展名:
extension NSStatusBarButton {
override open var allowsVibrancy: Bool { return false }
}