【问题标题】:How to create a Menubar application for Mac如何为 Mac 创建菜单栏应用程序
【发布时间】:2011-03-25 12:15:31
【问题描述】:

编辑:这是一个不错的现成菜单栏应用程序here (github source),由 answer 编写。


我想知道如何制作一个菜单栏应用程序,这样做有什么要求?

我看到一个简单的菜单栏应用程序是使用您的浏览器打开链接,我想创建类似的东西。

这是我喜欢做的类似应用。

【问题讨论】:

标签: macos cocoa menubar


【解决方案1】:

NSStatusItem 是您正在寻找的。还将字符串值为 1 的 LSUIElement 添加到您的 Info.plist 以将其隐藏在 Dock 中。

【讨论】:

【解决方案2】:

BitBarGitHub 上的一个应用程序,它可以“将任何内容放入您的 Mac OS X 菜单栏中”。

它运行 shell 或其他可执行脚本(它调用 Plugins - see the many examples in the plugins repo)并在菜单栏中显示结果。您可以编写自己的插件,只需将其添加到“插件文件夹”即可运行。除了显示信息外,它还可以从您定义的插件菜单交互地运行预定义的 bash 脚本。

自从我第一次发布此答案以来,它的受欢迎程度已达到 exploded(目前有 52 个贡献者),现在甚至还有一个可分发的版本,您可以使用它来打包自己的插件。

显示实时比特币价格的一个非常简单(非交互式)的示例:

【讨论】:

  • 感谢cwd 改进了我相当糟糕的原始答案
【解决方案3】:

由于 Apple 在 Yosemite 中为 NSStatusItem 添加了 NSStatusBarButton 属性,我们可以更简单地实现菜单栏应用程序。我刚刚在 github 上创建了一个示例项目。

https://github.com/taichino/PopupTest

【讨论】:

  • 感谢您将这些放在一起!
【解决方案4】:

Mail Notifr 是另一个开源菜单栏应用程序。它帮助了我很多,尤其是当我需要弄清楚如何实现登录时打开时。也可通过App Store 获得。

【讨论】:

    【解决方案5】:

    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];
    

    【讨论】:

    • 嗨 funroll,我想将此快捷方式始终保留在菜单栏中,就像 mac 中的默认值控制一样,是否可以通过编程实现...请帮助我!!!
    • @VSN StackOverflow cmets 不是寻求此类帮助的好地方。我建议阅读How to ask a good question
    • 我问了新问题-那里有任何帮助....stackoverflow.com/questions/23605687/…
    【解决方案6】:

    我发现Codebox's Popup 是一个很好的起点。 forking on Github.的时机成熟了

    虽然效果很好,但他们确实在他们的网站上注明...

    P。 S. 在 Lion 中,Apple 正在为类似 iOS 中的弹出框添加一个新类。 所以,在 OS X 10.7 发布后,最好还是依赖原生 可可类在可能的地方。在其他情况下,Popup 项目 应该还能用。

    【讨论】:

    • 在任何情况下都不是这样。 NSPopover 有严重的限制:文本字段/视图不能成为第一响应者,因此你不能输入文本。
    • @ChristianKienle 那么您是否仍然建议从 OS X 版本 > 10.7 的 Popup 应用程序开始?
    • 是的。 NSPopover + 状态项在 10.7 和 10.8 中有严重的限制。例如,上面的屏幕截图显示了一个搜索字段。通过使用 NSPopover,您无法与搜索字段正确交互。
    • 为什么Codebox的Popup样例会有这么复杂的BackgroundPanel?
    猜你喜欢
    • 2013-10-27
    • 2021-02-25
    • 2023-02-12
    • 2014-08-05
    • 1970-01-01
    • 2015-11-19
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多