Как нарисовать пользовательский вид в NSStatusBar? - PullRequest
0 голосов
/ 03 февраля 2020

В настоящее время у меня есть NSStatusBar с NSStatusBarItem с отображением заголовка. Но я не хочу заменять заголовок / текст на пользовательский NSView. Как я могу это сделать?

В настоящее время у меня есть:

func applicationDidFinishLaunching(_ aNotification: Notification) {
    let statusBar = NSStatusBar.system
    statusBarItem = statusBar.statusItem(withLength: NSStatusItem.variableLength)
    statusBarItem.button?.title = "My Menu Bar App"
}

Допустим, я не хочу заменять заголовок следующим текстом:

let view = NSView(frame: NSRect(x: 0, y: 0, width: 40, height: 40))
view.layer?.backgroundColor = NSColor.yellow.cgColor

Как можно Я достиг этого? Я попытался добавить это как подпредставление к кнопке, но безуспешно.

1 Ответ

1 голос
/ 03 февраля 2020
  • Создать сильную ссылку на элемент статуса на верхнем уровне класса

    let statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
    
  • в applicationDidFinishLaunching включить слой и добавить представление на подпункты кнопки

    func applicationDidFinishLaunching(_ aNotification: Notification) {
    
        let view = NSView(frame: NSRect(x: 0, y: 0, width: 22, height: 22))
        view.wantsLayer = true
        view.layer?.backgroundColor = NSColor.yellow.cgColor
        statusItem.button?.addSubview(view)
    
    }
    
...