【发布时间】:2011-03-25 12:15:31
【问题描述】:
编辑:这是一个不错的现成菜单栏应用程序here (github source),由 answer 编写。
我想知道如何制作一个菜单栏应用程序,这样做有什么要求?
我看到一个简单的菜单栏应用程序是使用您的浏览器打开链接,我想创建类似的东西。
这是我喜欢做的类似应用。
【问题讨论】:
-
这里是一个简单的tutorial。
编辑:这是一个不错的现成菜单栏应用程序here (github source),由 answer 编写。
我想知道如何制作一个菜单栏应用程序,这样做有什么要求?
我看到一个简单的菜单栏应用程序是使用您的浏览器打开链接,我想创建类似的东西。
这是我喜欢做的类似应用。
【问题讨论】:
NSStatusItem 是您正在寻找的。还将字符串值为 1 的 LSUIElement 添加到您的 Info.plist 以将其隐藏在 Dock 中。
【讨论】:
BitBar 是GitHub 上的一个应用程序,它可以“将任何内容放入您的 Mac OS X 菜单栏中”。
它运行 shell 或其他可执行脚本(它调用 Plugins - see the many examples in the plugins repo)并在菜单栏中显示结果。您可以编写自己的插件,只需将其添加到“插件文件夹”即可运行。除了显示信息外,它还可以从您定义的插件菜单交互地运行预定义的 bash 脚本。
自从我第一次发布此答案以来,它的受欢迎程度已达到 exploded(目前有 52 个贡献者),现在甚至还有一个可分发的版本,您可以使用它来打包自己的插件。
显示实时比特币价格的一个非常简单(非交互式)的示例:
【讨论】:
由于 Apple 在 Yosemite 中为 NSStatusItem 添加了 NSStatusBarButton 属性,我们可以更简单地实现菜单栏应用程序。我刚刚在 github 上创建了一个示例项目。
【讨论】:
Mail Notifr 是另一个开源菜单栏应用程序。它帮助了我很多,尤其是当我需要弄清楚如何实现登录时打开时。也可通过App Store 获得。
【讨论】:
FlyCut 是另一个很好的开源应用程序。 (MIT 许可。)也很方便,我一天用几次。
这里有一些看起来可能相关的代码:
// 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];
【讨论】:
我发现Codebox's Popup 是一个很好的起点。 forking on Github.的时机成熟了
虽然效果很好,但他们确实在他们的网站上注明...
P。 S. 在 Lion 中,Apple 正在为类似 iOS 中的弹出框添加一个新类。 所以,在 OS X 10.7 发布后,最好还是依赖原生 可可类在可能的地方。在其他情况下,Popup 项目 应该还能用。
【讨论】: