Storyboard

由于是基于Status Bar的应用,所以在Storyboard中将页面相关的组件都删除了,保留了Menu相关的组件。

配置info.plist

在info.plist中添加名为Application is agent (UIElement)的key,并将value值设置为YES。这样App就不会在Dock中显示

AppDelegate

在AppDelegate中创建StatusBar按钮并配置对应的action

import Cocoa

@main
class AppDelegate: NSObject, NSApplicationDelegate {
    
    let statusItem = NSStatusBar.system.statusItem(withLength:NSStatusItem.squareLength)

    func applicationDidFinishLaunching(_ aNotification: Notification) {        
        guard let button = self.statusItem.button else { return }
        button.image = NSImage(named: NSImage.Name("StatusBarIcon")) // StatusBarIcon is in Assets.xcassets
        button.action = #selector(showMenu)
    }

    func applicationWillTerminate(_ aNotification: Notification) {
        // Insert code here to tear down your application
    }
        
    @objc func showMenu() {//to be do}
}

监听快捷键 ➡️