MacOS Change menubar Icon using swift 4

2019-05-17 08:05发布

问题:

With the new Dark mode in MacOS Mojave I would like to change the menubar icon of my app. In default, it is a white black bear and rather than just inverting the colors I would like to use an icon of a snoozing bear.

I have all my code that sets up the menubar icon in AppDelegate in applicationDidFinishLaunching. So my question is: Is there a way to check if the dark mode was activated and then change the icon using swift 4?

I tried:

var inDarkMode: Bool {
  let mode = UserDefaults.standard.string(forKey: "AppleInterfaceStyle")
  return mode == "Dark"
}

and then an if statement around

button.image = NSImage(named: NSImage.Name(rawValue: "StatusBarButtonImage"))

but because the code is in applicationDidFinishLaunching this will only check once.

Any help much appreciated.

回答1:

As pointed to by Leo in the comments, Apple's docs explain the process clearly:

  1. open your asset catalog and add a new image asset.
  2. in the right side menu, click on the dropdown at Appearances:

It should be Any by default, change it to Any, Dark, or Any, Light, Dark to customize the icons you want to use for each case.