编辑:这是一个很好的现成菜单栏应用程序(github 源),由这个答案。
我想知道如何制作菜单栏应用程序,这样做有什么要求?
我看到一个简单的菜单栏应用程序是使用浏览器打开链接,我想创建类似的东西。
这是我喜欢制作类似的应用程序。
NSStatusItem是您正在寻找的。还将字符串值为 1 的 LSUIElement 添加到 Info.plist 以将其隐藏在 Dock 中。
我发现Codebox 的 Popup是一个很好的起点。在 Github 上分叉的时机已经成熟。
虽然效果很好,但他们确实在他们的网站上注明...
PS 在 Lion 中,Apple 正在为类似 iOS 的弹出框添加一个新类。因此,在 OS X 10.7 发布后,您最好尽可能依赖原生 Cocoa 类。在其他情况下,Popup 项目应该仍然可用。
BitBar是GitHub 上的一个应用程序,它可以“将任何东西放在你的 Mac OS X 菜单栏中”。
它运行 shell 或其他可执行脚本(它称为插件 - 请参阅插件 repo 中的许多示例)并在菜单栏中显示结果。您可以编写自己的插件,只需将其添加到“插件文件夹”即可运行。除了显示信息外,它还可以从您定义的插件菜单交互地运行预定义的 bash 脚本。
自从我第一次发布这个答案以来,它的受欢迎程度已经爆炸式增长(目前有 52 个贡献者),现在甚至还有一个可分发的版本,您可以使用它来打包自己的插件。
显示实时比特币价格的一个非常简单(非交互式)的示例:
由于 Apple 在 Yosemite 中添加了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上找到。