从 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 设置菜单栏图标的主要内容,如果未能解决你的问题,请参考以下文章

pyFLTK 菜单栏中是不是可以有图标?

带有菜单栏但没有 Dock 图标/切换菜单的 Cocoa 应用程序

win10任务栏图标大小设置了不生效?

如何在swift / SwiftUI中为滑动手势设置菜单栏图标的操作

delphi怎么设置个性图片菜单、分页菜单和图片标题栏啊,

用win10 安装matlab2016后,没有图标菜单栏也没有,怎么办?求帮助