替换 NSStatusBarButton NSView 以禁用活力
Replacing NSStatusBarButton NSView to disable vibrancy
我目前正在尝试降低添加到 Mac OS 中 NSStatusBarItems 图标的默认活力。我知道这可以通过更改 allowsVibrancy 属性来实现。但是,由于它在 NSView 上是只读的,我需要扩展它 class 并覆盖 allowsVibrancy 方法。
class NoneVibrancyView: NSView
{
override var allowsVibrancy: Bool { return false }
}
目前我的图标仍然看起来像 allowsVibrancy 被激活。我想知道我是否正确地替换了我的 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 }
}
我目前正在尝试降低添加到 Mac OS 中 NSStatusBarItems 图标的默认活力。我知道这可以通过更改 allowsVibrancy 属性来实现。但是,由于它在 NSView 上是只读的,我需要扩展它 class 并覆盖 allowsVibrancy 方法。
class NoneVibrancyView: NSView
{
override var allowsVibrancy: Bool { return false }
}
目前我的图标仍然看起来像 allowsVibrancy 被激活。我想知道我是否正确地替换了我的 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 }
}