一个 swift 写的 OS X 的Menu Bar 程序

jopen 9年前

OS X Menu Bar App

Create a New Project or File ⟶ New ⟶ Project - Choose Application ⟶ Cocoa Application under OS X and click Next

点击 MainMenu.xib

删除默认的 window and menu

打开 library 选择 menu 并且拖拽添加一个 NSMenu

关联 NSMenu 到 AppDelegate.swift (删除原来的 var window)

var statusMenu = NSMenu();    **************    let statusItem = NSStatusBar.systemStatusBar().statusItemWithLength(-1)    // 显示名称    statusItem.title = "Status Bar"  statusItem.menu = statusMenu       //or  显示一个图标    let icon = NSImage(named:"ic_cool")  icon?.setTemplate(true) // 支持 Yosemite 的 Dark mode  statusItem.image = icon   statusItem.menu = statusMenu       // or 显示一个 NSViewController    先声明  let popover = NSPopover()     if let button = statusItem.button{          button.image = NSImage(named: "ic_cool")          button.action = Selector("togglePopover:")      }     popover.contentViewController = MasterViewController(nibName:"MasterViewController",bundle:nil)        // 显示 popover  func showPopover(sender: AnyObject?) {      if let button = statusItem.button {          popover.showRelativeToRect(button.bounds, ofView: button, preferredEdge: NSMinYEdge)      }  }    // 关闭 popover  func closePopover(sender: AnyObject?) {      popover.performClose(sender)  }    // 显示 or 关闭 popover  func togglePopover(sender: AnyObject?) {      if popover.shown {          closePopover(sender)      } else {          showPopover(sender)      }  }

如图 添加 "Application is agent (UIElement)" 并且设置为 YES

然后运行 你将看到 效果如图

1 显示菜单

2 显示一个NSViewController

项目主页:http://www.open-open.com/lib/view/home/1438150080113