如何为Mac创buildMenubar应用程序
编辑:这是一个很好的现成的菜单栏应用程序( github源 )这个答案 。
我想知道如何做一个菜单栏应用程序,这样做的要求是什么?
我看到一个简单的菜单栏应用程序是用你的浏览器打开链接,我想创build类似的东西。
这是我喜欢做类似的应用程序。
NSStatusItem是你在找什么。 还要将string值为1的LSUIElement添加到Info.plist中,以将其从Dock中隐藏。
我发现Codebox的Popup是一个很好的起点。 在Github上分叉已经成熟了。
虽然它很好地工作,他们确实注意到他们的网站…
PS在Lion中,苹果正在像iOS一样添加一个新的类。 所以,在OS X 10.7发布之后,你最好在可能的地方使用原生的Cocoa类。 在其他情况下,Popup项目应该仍然可用。
正如苹果公司在优胜美地NSStatusBarButton
属性添加到NSStatusItem
,我们可以更简单地实现菜单栏应用程序。 我刚刚在github上创build了一个示例项目。
BitBar是GitHub上的一个应用程序,它可以“将任何东西放入Mac OS X菜单栏”。
它运行shell或其他可执行脚本(它称为插件 – 查看插件回购中的许多示例 ),并将结果显示在菜单栏中。 您可以编写自己的插件,只需将其添加到“插件文件夹”即可运行。 除了显示信息之外,它还可以从您定义的插件菜单交互式地运行预定义的bash脚本。
自从我第一次发布这个答案以来,它的受欢迎程度已经爆炸 (目前有52个贡献者),现在甚至有一个可分发的版本,您可以打包自己的插件。
一个非常简单的(非交互式)示例来显示比特币的实时价格:
FlyCut是另一个很好的开源应用程序。 (麻省理工学院许可。)非常方便,我一天几次使用它。
以下是一些看起来可能相关的代码:
// Flycut/AppController.h IBOutlet NSMenu *jcMenu; // Flycut/AppController.m statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength] retain]; [statusItem setHighlightMode:YES]; if ( [[DBUserDefaults standardUserDefaults] integerForKey:@"menuIcon"] == 1 ) { [statusItem setTitle:[NSString stringWithFormat:@"%C",0x2704]]; } else if ( [[DBUserDefaults standardUserDefaults] integerForKey:@"menuIcon"] == 2 ) { [statusItem setTitle:[NSString stringWithFormat:@"%C",0x2702]]; } else { [statusItem setImage:[NSImage imageNamed:@"com.generalarcade.flycut.16.png"]]; } [statusItem setMenu:jcMenu]; [statusItem setEnabled:YES];
Mail Notifr是另一个开源Menubar应用程序。 它帮了我一大堆,特别是当我需要弄清楚如何在login时实现open。 也可以在App Store上使用 。