2010-08-04 3 views
165

EDIT schaffen: Dies ist eine schöne fertige menubar Anwendung here (github source) diese answer.Wie eine Menubar-Anwendung für Mac


Ich frage mich, wie man eine Menüleiste erstellt, was sind die Voraussetzungen dafür?

Ich sah eine einfache Anwendung für die Menüleiste war, Links mit Ihrem Browser zu öffnen, ich möchte etwas ähnliches zu erstellen.

enter image description here

Dies ist die Anwendung, die ich ähnlich machen möchten.

+4

Hier ist eine einfache [tutorial] (http://nsrover.wordpress.com/2014/10/10/creating-a-os-x-menubar-only-app/). – NSRover

Antwort

129

NSStatusItem ist was Sie suchen. Fügen Sie auch LSUIElement mit dem Zeichenfolgenwert 1 zu Ihrer Info.plist hinzu, um sie vor dem Dock zu verbergen.

+0

Gibt es irgendwelche Proben, mit denen ich arbeiten kann? – MacMac

+14

http://www.mactech.com/articles/mactech/Vol.22/22.02/Menulet/ - hier ist ein Beispielcode mit einigen Erklärungen. – SteamTrout

+0

Ziemlich hilfreich. Vielen Dank. – MacMac

66

Ich habe gefunden Codebox's Popup, ein guter Ausgangspunkt zu sein. Es ist reif für forking on Github.

enter image description here

Obwohl es gut funktioniert, sie auf ihrer Website merken Sie ...

P. S. In Lion, Apple eine neue Klasse für popovers wie in iOS hinzufügt. Also, nachdem OS X 10.7 veröffentlicht wurde, sollten Sie sich besser auf native Cocoa-Klassen verlassen, wo es möglich ist. In anderen Fällen sollte das Popup-Projekt noch verwendbar sein.

+3

Dies ist in keinem Fall wahr. NSPopover hat schwerwiegende Einschränkungen: Textfelder/Ansichten können nicht zum Ersthelfer werden und Sie können daher keinen Text eingeben. –

+0

@ChristianKienle also würden Sie immer noch empfehlen, mit der Popup-Anwendung mit OS X-Versionen> 10.7 anzufangen? – fatuhoku

+0

Ja. NSPopover + Status Item hat schwerwiegende Einschränkungen in 10.7 und 10.8. Zum Beispiel zeigt der obige Screenshot ein Suchfeld. Mit einem NSPopover können Sie nicht richtig mit dem Suchfeld interagieren. –

2

FlyCut ist eine andere nette Open-Source-Anwendung, die dies tut. (MIT lizenziert.) Sehr praktisch auch, ich benutze es mehrmals am Tag.

Hier einige Code, der wie es scheint, von Bedeutung sein können:

// 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

Hallo Funroll, ich möchte diese Abkürzung immer in der Menüleiste behalten wie die Standard-Valume-Steuerung in Mac ist es möglich mit Programmierung ... bitte hilf mir !!! – VSN

+0

@VSN StackOverflow Kommentare sind kein guter Ort, um nach Hilfe zu fragen. Ich würde vorschlagen, [Wie man eine gute Frage stellt] (http://stackoverflow.com/help/how-to-ask). – funroll

+0

Ich habe eine neue Frage gestellt - jede Hilfe dort .... http://stackoverflow.com/questions/23605687/keep-application-shortcut-always-in-system-menubar-application-for-mac – VSN

10

Als Apple-NSStatusBarButton Eigenschaft NSStatusItem in Yosemite hinzugefügt haben, können wir viel einfacher menubar App implementieren. Ich habe gerade ein Beispielprojekt auf GitHub erstellt.

https://github.com/taichino/PopupTest

+0

Danke für das Putten das zusammen! – cwd

8

BitBar ist eine Anwendung auf GitHub, die "alles in Ihrer Mac OS X Menüleiste Put" können.

Es führt Shell oder andere ausführbare Skripts (die es ruft Plugins - see the many examples in the plugins repo) und zeigt die Ergebnisse in der Menüleiste. Sie können Ihr eigenes Plugin schreiben und einfach ausführen, indem Sie es zum "Plugins-Ordner" hinzufügen. Neben der Anzeige von Informationen kann es auch vordefinierte Bash-Skripte interaktiv aus den Plugin-Menüs ausführen, die Sie definieren.

Seit ich diese Antwort zum ersten Mal gepostet habe, ist es die Popularität exploded (derzeit 52 Mitwirkende) und es gibt jetzt sogar eine verteilbare Version, mit der du deine eigenen Plugins verpacken kannst.

Ein sehr einfaches (nicht interaktiv) Beispiel Live Bitcoin Preis zeigen:

enter image description here

+3

danke an [cwd] (http://stackoverflow.com/users/288032/cwd) für die Verbesserung meiner ziemlich armen ursprünglichen Antwort – MatzFan

0

Mail Notifr ein andere App Open-Source-Menubar ist. Es hat mir sehr geholfen, vor allem, wenn ich herausfinden musste, wie man das Open bei der Anmeldung implementiert. Auch verfügbar auf der App Store.