Answers:
NSStatusItem是您要寻找的。还将字符串值1的LSUIElement添加到Info.plist,以将其从Dock中隐藏。
我发现Codebox的Popup是一个很好的起点。在Github上分叉的时机已经成熟。
尽管效果很好,但他们确实在自己的网站上注明了...
PS在Lion中,Apple为iOS中的弹出窗口添加了新类。因此,在OS X 10.7发布之后,您最好在可能的情况下依赖本机Cocoa类。在其他情况下,弹出项目仍应可用。
位栏是GitHub上的一个应用程序,可以“在Mac OS X菜单栏中放入任何内容”。
它运行shell或其他可执行脚本(它称为 插件-请参见插件repo中的许多示例),并将结果显示在菜单栏中。您可以编写自己的插件并使其运行,只需将其添加到“插件文件夹”中即可。除了显示信息外,它还可以从您定义的插件菜单以交互方式运行预定义的bash脚本。
自从我第一次发布此答案以来,它的受欢迎程度一直很高 激增了(目前有52位贡献者),现在甚至还有一个可分发的版本,您可以使用该版本打包自己的插件。
一个非常简单的(非交互式)示例来显示实时比特币价格:
随着苹果在优胜美地中增加了NSStatusBarButton
财产NSStatusItem
,我们可以更简单地实现菜单栏应用程序。我刚刚在github上创建了一个示例项目。
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是另一个开源菜单栏应用程序。它为我提供了很多帮助,特别是当我需要弄清楚如何实现登录时实现开放时。也可在App Store上获得。