Jak stworzyć aplikację Menubar na Maca


175

EDYCJA: To jest ładna, gotowa aplikacja paska menu tutaj ( źródło github ) według tej odpowiedzi .


Zastanawiałem się, jak zrobić aplikację paska menu, jakie są wymagania, aby to zrobić?

Widziałem, że prosta aplikacja do paska menu miała otwierać linki za pomocą przeglądarki, chcę stworzyć coś podobnego.

wprowadź opis obrazu tutaj

To jest aplikacja, którą lubię robić podobnie.


4
Oto prosty samouczek .
NSRover

Odpowiedzi:


133

NSStatusItem jest tym, czego szukasz. Dodaj również element LSUIElement o wartości 1 do swojej Info.plist, aby ukryć go przed Dockiem.


14
mactech.com/articles/mactech/Vol.22/22.02/Menulet - oto przykładowy kod z wyjaśnieniem.
SteamTrout

2
Możesz sprawdzić jeden z moich projektów GitHug na przykład: github.com/nippysaurus/WeatherRock/blob/master/…
Nippysaurus

3
Zaimplementowałem przykład opisany w linku SteamTrout i umieściłem go na githubie. Jest tutaj: github.com/wanderingstan/IPMenuletExample
Stan James

Witaj Steam Trout, dziękujemy za pomoc ... ale jak możemy utrzymać nasz skrót do aplikacji zawsze na pasku menu, dopóki użytkownik nie odinstaluje aplikacji ... jakakolwiek pomoc .... stackoverflow.com/questions/23605687/
VSN

66

Uważam, że Popup Codebox jest świetnym punktem wyjścia. Jest gotowy do rozwidlenia na Githubie.

wprowadź opis obrazu tutaj

Chociaż działa dobrze, zauważają na swojej stronie ...

PS W Lion, Apple dodaje nową klasę dla popoverów, takich jak w iOS. Tak więc po wydaniu OS X 10.7 lepiej polegać na rodzimych klasach Cocoa, jeśli jest to możliwe. W innych przypadkach projekt Popup powinien nadal nadawać się do użytku.


3
W każdym razie nie jest to prawdą. NSPopover ma poważne ograniczenia: pola tekstowe / widoki nie mogą zostać pierwszą osobą odpowiadającą i dlatego nie można wprowadzać tekstu.
Christian Kienle,

@ChristianKienle, czy nadal zalecamy rozpoczęcie pracy z aplikacją Popup w wersjach systemu OS X> 10.7?
fatuhoku

Tak. Pozycja statusu NSPopover + ma poważne ograniczenia w wersjach 10.7 i 10.8. Na przykład powyższy zrzut ekranu pokazuje pole wyszukiwania. Korzystając z NSPopover, nie można poprawnie korzystać z pola wyszukiwania.
Christian Kienle,

1
dlaczego próbka Popup Codebox ma tak skomplikowany BackgroundPanel?
rbp

13

BitBar to aplikacja na GitHubie, która może „umieścić wszystko na pasku menu Mac OS X”.

Uruchamia powłokę lub inne wykonywalne skrypty (które nazywa Wtyczkami - zobacz wiele przykładów w repozytorium wtyczek ) i wyświetla wyniki na pasku menu. Możesz napisać własną wtyczkę i uruchomić ją po prostu dodając ją do „folderu wtyczek”. Oprócz wyświetlania informacji, może również interaktywnie uruchamiać predefiniowane skrypty bash z menu wtyczek, które zdefiniujesz.

Odkąd po raz pierwszy opublikowałem tę odpowiedź, jej popularność gwałtownie wzrosła (obecnie 52 współtwórców), a teraz istnieje nawet wersja do dystrybucji, za pomocą której można spakować własne wtyczki.

Bardzo prosty (nieinteraktywny) przykład pokazujący cenę Bitcoin na żywo:

wprowadź opis obrazu tutaj


4
dzięki cwd za poprawienie mojej raczej kiepskiej oryginalnej odpowiedzi
MatzFan


2

FlyCut to kolejna fajna aplikacja open source, która to robi. (Na licencji MIT). Bardzo poręczny, używam go kilka razy dziennie.

Oto kod, który wydaje się być odpowiedni:

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

Cześć funroll, chciałbym, aby ten skrót był zawsze na pasku menu, taki jak domyślna kontrola wartości w Macu, czy jest to możliwe z programowaniem ... proszę mi pomóc!
VSN

Komentarze @VSN StackOverflow nie są dobrym miejscem do proszenia o pomoc w ten sposób. Proponuję przeczytać Jak zadać dobre pytanie .
funroll

zadałem nowe pytanie - jakakolwiek pomoc ... stackoverflow.com/questions/23605687/…
VSN

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.