Cara membuat aplikasi Menubar untuk Mac

175

EDIT: Ini adalah aplikasi menubar siap pakai yang bagus di sini ( sumber github ) dengan jawaban ini .


Saya bertanya-tanya bagaimana cara membuat aplikasi menubar, apa persyaratan untuk itu?

Saya melihat aplikasi sederhana untuk menubar adalah membuka tautan menggunakan browser Anda, saya ingin membuat sesuatu yang mirip dengan itu.

masukkan deskripsi gambar di sini

Ini adalah aplikasi yang ingin saya buat serupa.

MacMac
sumber
4
Berikut ini adalah tutorial sederhana .
NSRover

Jawaban:

133

NSStatusItem adalah apa yang Anda cari. Juga tambahkan LSUIElement dengan nilai string 1 ke Info.plist Anda untuk menyembunyikannya dari Dock.

SteamTrout
sumber
14
mactech.com/articles/mactech/Vol.22/22.02/Menulet - inilah contoh kode dengan beberapa penjelasan.
SteamTrout
2
Anda dapat memeriksa salah satu proyek GitHug saya untuk contoh: github.com/nippysaurus/WeatherRock/blob/master/…
Nippysaurus
3
Saya menerapkan contoh yang dijelaskan dalam tautan SteamTrout dan meletakkannya di github. Itu ada di sini: github.com/wanderingstan/IPMenuletExample
Stan James
Halo Steam Trout, terima kasih atas bantuan Anda ... tapi bagaimana kami bisa menjaga pintasan aplikasi kami selalu di menu bar, sampai pengguna menghapus aplikasi ... bantuan apa pun .... stackoverflow.com/questions/23605687/…
VSN
66

Saya menemukan Popup Codebox sebagai titik awal yang bagus. Sudah matang untuk forking di Github.

masukkan deskripsi gambar di sini

Meskipun bekerja dengan baik, mereka mencatat di situs mereka ...

PS In Lion, Apple menambahkan kelas baru untuk popover seperti di iOS. Jadi, setelah OS X 10.7 dirilis, Anda sebaiknya mengandalkan kelas Cocoa asli di mana dimungkinkan. Dalam kasus lain, proyek Popup masih dapat digunakan.

Alex Gray
sumber
3
Bagaimanapun, ini tidak benar. NSPopover memiliki batasan serius: Bidang / Tampilan Teks tidak bisa menjadi responden pertama dan karenanya Anda tidak dapat memasukkan teks.
Christian Kienle
@ChristianKienle jadi apakah Anda masih merekomendasikan untuk memulai dengan aplikasi Popup dengan versi OS X> 10.7?
fatuhoku
Iya. NSPopover + Status Item memiliki batasan serius dalam 10.7 dan 10.8. Misalnya tangkapan layar di atas menunjukkan bidang pencarian. Dengan menggunakan NSPopover, Anda tidak dapat berinteraksi dengan bidang pencarian dengan benar.
Christian Kienle
1
mengapa sampel Popup Codebox memiliki BackgroundPanel yang rumit?
rbp
13

BitBar adalah aplikasi di GitHub yang dapat "Masukkan apa saja di bilah menu Mac OS X".

Ini menjalankan shell atau skrip yang dapat dieksekusi lainnya (yang disebut Plugins - lihat banyak contoh di repo plugins ) dan menampilkan hasilnya di bilah menu. Anda dapat menulis plugin sendiri dan menjalankannya hanya dengan menambahkannya ke 'folder Plugins'. Selain menampilkan informasi, ia juga dapat menjalankan skrip bash yang telah ditentukan sebelumnya secara interaktif dari menu plugin yang Anda tentukan.

Sejak saya pertama kali memposting jawaban ini popularitasnya telah meledak (52 kontributor saat ini) dan sekarang bahkan ada versi yang dapat didistribusikan dengan mana Anda dapat mengemas plugin Anda sendiri.

Contoh sangat sederhana (non-interaktif) untuk menunjukkan harga Bitcoin langsung:

masukkan deskripsi gambar di sini

MatzFan
sumber
4
terima kasih kepada cwd untuk meningkatkan jawaban asli saya yang agak buruk
MatzFan
10

Karena Apple menambahkan NSStatusBarButtonproperti NSStatusItemdi Yosemite, kita dapat mengimplementasikan aplikasi menubar dengan lebih mudah. Saya baru saja membuat proyek sampel di github.

https://github.com/taichino/PopupTest

taichino
sumber
Terima kasih telah menyatukan ini!
cwd
2

FlyCut adalah aplikasi open source lain yang bagus untuk melakukan ini. (Dilisensikan MIT.) Sangat berguna juga, saya menggunakannya beberapa kali sehari.

Berikut ini beberapa kode yang sepertinya relevan:

    // 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
sumber
Halo funroll, saya ingin menjaga pintasan ini selalu di bilah menu seperti kontrol valume default di mac apakah mungkin dengan pemrograman ... tolong bantu saya !!!
VSN
@VSN StackOverflow komentar bukan tempat yang baik untuk meminta bantuan seperti ini. Saya sarankan membaca Bagaimana cara mengajukan pertanyaan yang bagus .
funroll
Saya telah mengajukan pertanyaan baru - bantuan apa saja di sana .... stackoverflow.com/questions/23605687/…
VSN
0

Mail Notifr adalah aplikasi Menubar open source lainnya. Itu membantu saya banyak, terutama ketika saya perlu mencari cara menerapkan open pada login. Juga tersedia di App Store .

lindon fox
sumber