温馨提示:本文翻译自stackoverflow.com,查看原文请点击:swift - Replacing NSStatusBarButton NSView to disable vibrancy
swift nsstatusitem nsstatusbar

swift - 替换NSStatusBarButton NSView以禁用活力

发布于 2020-03-31 23:03:15

我目前正在尝试减少在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

查看更多

提问者
user1391281
被浏览
57
Maschina 2020-01-31 20:32

子视图的振动性将被其父级的振动性所覆盖。因此,需要设置自定义视图的父级状态栏按钮的亮度(由于addSubview())。

由于状态项的按钮是自动生成的,因此您可能需要使用扩展名:

extension NSStatusBarButton { 
    override open var allowsVibrancy: Bool { return false } 
}