0

我正在尝试在 macOS 系统托盘中写两行文本,就像 iStat pro 为网络活动所做的那样:

在此处输入图像描述

我知道我必须将 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)

我在stackoverflow上找到了其他线程:

4

1 回答 1

1

怀疑这是您要查找的内容,但这会将两行文本放入状态项中:

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()

它仍然只是一个按钮,我不知道您将如何分离每个项目的选择。也许下拉菜单会更好?

于 2020-05-02T15:51:56.930 回答