Swift MacOS在状态栏上创建进度栏

Swift MacOS在状态栏上创建进度栏,swift,macos,progress-bar,statusbar,nsstatusbar,Swift,Macos,Progress Bar,Statusbar,Nsstatusbar,我正在寻找一种方法,将ProgressBar作为按钮放在Mac状态栏上。我想要这样的东西: 或 我能做的是: let statusItem = NSStatusBar.system.statusItem(withLength:NSStatusItem.variableLength) [...] if let button = statusItem.button { button.image = NSImage(named:NSIma

我正在寻找一种方法,将ProgressBar作为按钮放在Mac状态栏上。我想要这样的东西:

我能做的是:

    let statusItem = NSStatusBar.system.statusItem(withLength:NSStatusItem.variableLength)

    [...]

    if let button = statusItem.button {
                button.image = NSImage(named:NSImage.Name("JustSomeImage"))
                button.title = "Hello"
                button.action = #selector(togglePopover(_:))

            }

但对于NSStatusItem,我仅限于使用按钮和菜单对象来操作NSStatusBar。所以我所能做的就是把一个带有文字的图像放到工具栏上。我已经寻找了很多解决方案并阅读了文档,但不知何故,我找不到一种方法在上面放置进度条。有人知道我该怎么做吗?

因为NSButton是NSView的一个子类,所以您可以添加任何想要添加的视图。下面您可以在Objective C中找到一个小代码段,但将其转换为Swift应该不难

NSProgressIndicator *indicator = [[NSProgressIndicator alloc] initWithFrame:button.frame];
[button addSubview:indicator];

祝你万事如意。

谢谢,这很有帮助。你能告诉我怎么做类似的事情吗,比如在主帖子的图片上?我不知道我需要用什么样的组件来画它。我可以添加标签“CPU”和“MEM”作为图像,但是进度条我不知道怎么做有不同的选项。通过使用NSBezierPath或使用不同的NSImage在NSView中自定义图形,并根据仪表级别显示这些图形。由于图标并不复杂,我将使用第一种方法。首先绘制一个ReCT和一个在中间增加了线宽的线。嘿,我已经尝试了第一种方法,但是我在尝试用指定的颜色填充矩形时已经失败了。此外,选择NSStatusItem.variableLength时,它似乎不会调整NSStatusItem的长度。即使我的NSRect的宽度设置为>100,它仍保持在~20(我甚至不知道度量)。现在我想尝试另一种方法,只制作一些进度条间隔约10%的图像。虽然我现在的问题是,如何在一个NSView中添加两个图像?对不起,如果我打扰了你,但是我在网上找不到足够的关于这个的文档/代码示例