从 ViewController 设置菜单栏图标
Posted
技术标签:
【中文标题】从 ViewController 设置菜单栏图标【英文标题】:Set menubar icon from ViewController 【发布时间】:2020-05-19 16:28:16 【问题描述】:如何从另一个 ViewController 更改 MacOS 应用程序的菜单栏图标?
AppDelegate.swift(初始化菜单栏图标) ViewController.swift(尝试设置菜单栏图标❌)我找到了这个,但这并没有改变我的菜单栏图标: Mac: How to save alternate app icon in dock OSX xcode
let image = NSImage.init(named: NSImage.Name(rawValue: "AltAppIcon"))
NSApp.applicationIconImage = image
看到 BOINC 图标在其菜单栏的右下角有一个小的自定义暂停符号/徽章吗?此应用程序的图标发生变化。他们是否会改写该文件的名称并将其更改为“暂停的图标”图像?
✅更新*
设置菜单栏图标的AppDelegate.swift
函数起作用了:
AppDelegate.swift
func setIcon()
let onIcon = NSImage(named: "fv-mini-icon-green")
statusItem.button?.image = onIcon
ViewController.swift
func taskOnIcon()
DispatchQueue.main.async(execute:
let appDele = NSApplication.shared.delegate as! AppDelegate
appDele.setIcon()
)
【问题讨论】:
菜单栏图标是NSStatusItem
实例的一部分
见这里:developer.apple.com/documentation/appkit/nsstatusitem
【参考方案1】:
这是一种方法...
class AppDelegate: NSObject, NSApplicationDelegate
var statusBarItem: NSStatusItem!
func applicationDidFinishLaunching(_ aNotification: Notification)
let statusBar = NSStatusBar.system
statusBarItem = statusBar.statusItem(withLength: 16)
let button = statusBarItem.button
button?.image = NSImage(named: "fv-mini-icon-green")
// .. other code here
【讨论】:
以上是关于从 ViewController 设置菜单栏图标的主要内容,如果未能解决你的问题,请参考以下文章
带有菜单栏但没有 Dock 图标/切换菜单的 Cocoa 应用程序