示例(不显示窗口)
import SwiftUI
@main
struct StatusBarApp: App {
@NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {
// 不创建任何窗口
EmptyScene()
}
}
class AppDelegate: NSObject, NSApplicationDelegate {
var statusItem: NSStatusItem?
func applicationDidFinishLaunching(_ aNotification: Notification) {
// 设置应用程序的激活策略为 accessory
NSApplication.shared.setActivationPolicy(.accessory)
// 创建状态栏项
statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.squareLength)
if let button = statusItem?.button {
button.image = NSImage(systemSymbolName: "star", accessibilityDescription: "Star")
button.action = #selector(statusBarButtonClicked)
}
// 添加菜单
let menu = NSMenu()
menu.addItem(NSMenuItem(title: "Item 1", action: #selector(menuItemClicked), keyEquivalent: "n"))
menu.addItem(NSMenuItem(title: "Quit", action: #selector(NSApp.terminate(_:)), keyEquivalent: "q"))
statusItem?.menu = menu
}
@objc func statusBarButtonClicked() {
// 响应点击状态栏图标的事件
print("Status bar button clicked!")
}
@objc func menuItemClicked() {
// 响应菜单项点击事件
print("Menu item clicked!")
}
}
struct EmptyScene: Scene {
var body: some Scene {
// 不创建任何窗口
WindowGroup {
EmptyView()
}
}
}关键点:
Last updated