【问题标题】:How to draw two lines of text in a NSView subclass ? (macOS system tray)如何在 NSView 子类中绘制两行文本? (macOS 系统托盘)
【发布时间】:2020-08-16 20:12:45
【问题描述】:

我正在尝试在 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 上找到了其他线程:

【问题讨论】:

    标签: swift macos cocoa nsview nsstatusbar


    【解决方案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()
    

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

    【讨论】:

    • 这将解决我想要做的事情,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 2019-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    相关资源
    最近更新 更多