2

現在、Mac OS の NSStatusBarItems アイコンに追加されるデフォルトの鮮やかさを減らそうとしています。これは、allowsVibrancy 属性を変更することで実現できることを理解しています。ただし、これは NSView では読み取り専用であるため、そのクラスを拡張して、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
4

1 に答える 1

1

サブビューの鮮やかさは、その親の鮮やかさによって上書きされます。したがって、カスタム ビューの親であるステータス バー ボタンの鮮やかさを設定する必要があります (理由によるaddSubview())。

ステータス アイテムのボタンは自動的に生成されるため、そのために拡張機能を使用する必要がある場合があります。

extension NSStatusBarButton { 
    override open var allowsVibrancy: Bool { return false } 
}
于 2020-01-31T12:32:01.683 に答える