2010-08-04 80 views
165

編輯:這是一個很好的現成的菜單欄應用程序heregithub source)由此answer如何創建一個Menubar應用程序的Mac


我想知道如何使菜單欄的應用程序,什麼是對,這樣做要求?

我看到一個簡單的菜單欄應用程序是用你的瀏覽器打開鏈接,我想創建類似的東西。

enter image description here

這是我喜歡做類似的應用程序。

+4

這是一個簡單的[教程](http://nsrover.wordpress.com/2014/10/10/creating-a-os-x-menubar-only-app/)。 – NSRover 2014-10-10 06:29:24

回答

129

NSStatusItem是你在找什麼。還要將字符串值爲1的LSUIElement添加到Info.plist中,以將其從Dock中隱藏。

+0

有沒有我可以使用的樣品? – MacMac 2010-08-04 21:46:40

+14

http://www.mactech.com/articles/mactech/Vol.22/22.02/Menulet/ - 這裏有一些示例代碼和一些解釋。 – SteamTrout 2010-08-05 06:46:36

+0

相當有幫助。謝謝。 – MacMac 2010-08-05 07:33:08

66

我發現Codebox's Popup是一個很好的起點。這是成熟的forking on Github.

enter image description here

雖然它工作得很好,他們也注意到在其網站上...

P. S. Lion中,蘋果加入了popovers一類新的類似iOS中。 因此,在OS X 10.7發佈之後,您最好在可能的地方依靠本地的 Cocoa類。在其他情況下,Popup項目 仍應可用。

+3

這不是真的在任何情況下。 NSPopover具有嚴重的限制:文本字段/視圖無法成爲第一響應者,因此您無法輸入文本。 – 2013-02-04 20:24:06

+0

@ChristianKienle所以你仍然會推薦從OS X版本> 10.7的Popup應用程序開始。 – fatuhoku 2013-08-09 11:38:45

+0

是的。 NSPopover +狀態項在10.7和10.8中有嚴重的侷限性。例如上面的屏幕截圖顯示了一個搜索字段。通過使用NSPopover,您無法正確地與搜索字段進行交互。 – 2013-08-09 14:16:20

2

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

嗨funroll,我想保持這個快捷方式總是在菜單欄中像默認的valume控制在mac是有可能與編程...請幫助我! – VSN 2014-05-10 16:16:01

+0

@VSN StackOverflow評論並不是尋求這樣的幫助的好地方。我會建議閱讀[如何問一個好問題](http://stackoverflow.com/help/how-to-ask)。 – funroll 2014-05-11 12:22:16

+0

我已經提出了新的問題,任何幫助那裏.... http://stackoverflow.com/questions/23605687/keep-application-shortcut-always-in-system-menubar-application-for-mac – VSN 2014-05-12 09:50:45

10

由於蘋果在優勝美地加入NSStatusBarButton屬性爲NSStatusItem,我們可以實現菜單欄的應用程序變得簡單許多。我剛剛在github上創建了一個示例項目。

https://github.com/taichino/PopupTest

+0

謝謝你把這一起! – cwd 2015-09-26 14:59:18

8

BitBarGitHub的應用程序,可以 「在你的Mac OS X的菜單欄將任何東西」。

它運行shell或其他可執行腳本(稱爲Plugins - see the many examples in the plugins repo)並在菜單欄中顯示結果。您可以編寫自己的插件,並通過將其添加到「插件文件夾」來運行它。除了顯示信息之外,它還可以從您定義的插件菜單交互式地運行預定義的bash腳本。

由於我第一次發佈這個答案它的流行有exploded(52個貢獻者目前),現在甚至有一個可分發的版本,您可以打包自己的插件。

一個非常簡單的(非互動)爲例,說明現場比特幣價格:

enter image description here

+3

感謝[cwd](http://stackoverflow.com/users/288032/cwd)爲改善我相當貧窮的原始答案 – MatzFan 2015-09-27 16:29:53

0

Mail Notifr是另一個開源應用程序菜單欄。它幫助了我,尤其是當我需要弄清楚如何在登錄時實現open。也可在App Store上找到。