177

編集: これは、この回答による素敵な既製のメニューバー アプリケーションです( github ソース) 。


メニューバー アプリケーションを作成する方法を知りたいのですが、そのための要件は何ですか?

ブラウザを使用してリンクを開くというメニューバーの簡単なアプリケーションを見ました。それに似たものを作成したいと思います。

ここに画像の説明を入力

これは私が似たようなものにしたいアプリケーションです。

4

6 に答える 6

133

NSStatusItemはあなたが探しているものです。また、文字列値が 1 の LSUIElement を Info.plist に追加して、Dock から非表示にします。

于 2010-08-04T21:43:22.137 に答える
66

Codebox の Popupが素晴らしい出発点であることがわかりました。Githubでフォークする機は熟しています。

ここに画像の説明を入力

それはうまく機能しますが、彼らは自分のサイトに注意しています...

PS Lion では、Apple は iOS のようなポップオーバー用の新しいクラスを追加しています。したがって、OS X 10.7 がリリースされた後は、可能な場合はネイティブの Cocoa クラスに依存することをお勧めします。それ以外の場合、Popup プロジェクトは引き続き使用できるはずです。

于 2011-07-26T18:36:44.630 に答える
14

BitBarは、 「Mac OS X のメニュー バーに何でも入れる」ことができるGitHubのアプリケーションです。

シェルまたはその他の実行可能スクリプト (プラグインと呼ばれます- プラグイン リポジトリの多くの例を参照) を実行し、結果をメニュー バーに表示します。独自のプラグインを作成し、'Plugins フォルダー' に追加するだけで実行できます。情報を表示するだけでなく、定義済みのプラグイン メニューから事前定義された bash スクリプトをインタラクティブに実行することもできます。

この回答を最初に投稿して以来、その人気は爆発的に高まり(現在 52 人の貢献者)、独自のプラグインをパッケージ化できる配布可能なバージョンさえあります。

ライブ ビットコイン価格を表示する非常に単純な (非対話型) 例:

ここに画像の説明を入力

于 2015-06-02T17:28:46.077 に答える
10

NSStatusBarButtonApple が Yosemite にプロパティを追加したのでNSStatusItem、メニューバー アプリをより簡単に実装できます。github にサンプル プロジェクトを作成しました。

https://github.com/taichino/PopupTest

于 2015-03-30T05:51:57.050 に答える
2

FlyCutは、これを行うもう 1 つの優れたオープン ソース アプリケーションです。(MIT ライセンス) 非常に便利で、1 日に数回使用しています。

関連する可能性があると思われるコードを次に示します。

    // 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];
于 2014-02-10T16:54:31.987 に答える