是否可以在 macOS 状态栏中放置矢量(或字体)图标?

Is it possible to place a vector (or font) icon in macOS status bar?

我使用 Swift 5 和 SwiftUI(如果重要的话),我想放置一个矢量图标(或字体图标,这将是一个更好的选择me) 在状态栏中的文本旁边。

我找到了一个示例,据我所知,它创建了一个按钮并将其放在状态栏中。

    self.statusBarItem = NSStatusBar.system.statusItem(withLength: CGFloat(NSStatusItem.variableLength))
    if let button = self.statusBarItem.button {
        button.image = NSImage(named: "Icon")
        button.title = "MyText"
        button.action = #selector(togglePopover(_:))
    }

但是,据我所知,使用光栅图像并不是一个好主意,因为它的大小可能会因许多因素而异。而且,通常情况下,我会为这些东西使用字体图标,它几乎在任何地方都能完美地工作。

或者,也许可以在状态栏项目中插入一个 SwiftUI 视图?

Apple 对此是这样说的

/*
 Custom views should not be set on a status item.
 The button property with a template image will allow proper styling of 
 the status item in various states and contexts and should be used instead.
 */
@property (nullable, strong) NSView *view API_DEPRECATED("Use the standard button property instead", macos(10.0,10.14));

如果你仍然想要这个,那么 NSButton 是一个视图,你总是可以用你的自定义内容向它添加子视图。但是我建议走官方途径。

最后想出了这个方法:

我制作了一种继承自标准 San Francisco 字体的自定义字体,并在 Unicode 区域包含了必要的图标,因此现在我可以在那里键入任何文本和必要的图标。我用Icomoon网站做了一个字体

此外,还有 a lot of icons embedded in San Francisco font 无需任何额外工作即可使用(您只需从应用程序复制符号并将其粘贴到按钮的“标题”属性)。