Mac-OS-X-App-Menu-Bar-Popup 项目教程
1. 项目的目录结构及介绍
Mac-OS-X-App-Menu-Bar-Popup/
├── README.md
├── LICENSE
├── gitignore
├── screenshots/
└── Popup/
├── AppDelegate.swift
├── EventMonitor.swift
├── MainMenu.xib
└── Info.plist
- README.md: 项目说明文件,包含项目的基本介绍和使用方法。
- LICENSE: 项目许可证文件,本项目使用 MIT 许可证。
- gitignore: Git 忽略文件配置。
- screenshots/: 项目截图目录,包含项目的界面截图。
- Popup/: 项目的主要代码目录。
- AppDelegate.swift: 应用程序的入口文件,负责应用程序的生命周期管理。
- EventMonitor.swift: 事件监视器类,用于处理系统事件。
- MainMenu.xib: 主菜单界面文件,定义应用程序的菜单栏界面。
- Info.plist: 应用程序的配置文件,包含应用程序的基本信息和配置。
2. 项目的启动文件介绍
项目的启动文件是 AppDelegate.swift
,该文件负责应用程序的生命周期管理。以下是 AppDelegate.swift
的主要内容:
import Cocoa
@main
class AppDelegate: NSObject, NSApplicationDelegate {
var statusItem: NSStatusItem?
var eventMonitor: EventMonitor?
func applicationDidFinishLaunching(_ aNotification: Notification) {
// 创建状态栏项
statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.squareLength)
if let button = statusItem?.button {
button.image = NSImage(named: "StatusBarButtonImage")
button.action = #selector(togglePopup(_:))
}
// 创建事件监视器
eventMonitor = EventMonitor(mask: [.leftMouseDown, .rightMouseDown]) { [weak self] event in
if let strongSelf = self, strongSelf.popupIsVisible {
strongSelf.closePopup()
}
}
}
func applicationWillTerminate(_ aNotification: Notification) {
// 应用程序即将终止时的处理
}
@objc func togglePopup(_ sender: Any?) {
// 切换弹出窗口的显示状态
}
func closePopup() {
// 关闭弹出窗口
}
}
3. 项目的配置文件介绍
项目的配置文件是 Info.plist
,该文件包含应用程序的基本信息和配置。以下是 Info.plist
的主要内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSMinimumSystemVersion</key>
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>NSSupportsAutomaticGraphicsSwitching</key>
<true/>
</dict>
</plist>
- **CFBundleDevelopment