Как нарисовать две строки текста в подклассе NSView? (системный трей macOS) - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь написать две строки текста в системном трее MacOS, очень похоже на iStat pro для сетевой активности:

enter image description here

Я знаю, что для этого нужно создать подкласс NSView, но мне не удается заставить его работать даже для одной строки:

class CustomView:NSView {

  override func draw(_ dirtyRect: NSRect) {
        let text: NSString = "my string"

        let textRect: NSRect = NSMakeRect(0, 0, 100, 20)
        text.draw(in: textRect)

  }
}

, а затем:

let statusBar = NSStatusBar.system
statusItem = statusBar.statusItem(withLength: 100)
let view = CustomView()
view.wantsLayer = true
statusItem.button?.addSubview(view)

I ' мы нашли другие потоки в stackoverflow:

1 Ответ

1 голос
/ 02 мая 2020

Сомневаюсь, что это то, что вы ищете, но это поместит две строки текста в элемент статуса:

import Cocoa

let app = NSApplication.shared
let statusItem = NSStatusBar.system.statusItem(withLength:-1)
statusItem.button?.font = NSFont(name:"Menlo Bold", size: 10.0)
statusItem.button!.title = "one\ntwo"
app.run()

Это все еще одна кнопка, и я не вижу, как вы отделите Выбор каждого предмета. Возможно, выпадающее меню будет работать лучше?

...