MacのStatusBar Applicationのつくりかた

Macのメニューバーの右側,spotlightとかがあるところはStatusBarと呼ぶらしい. StatusBarに常駐し,Dockには特にアイコンが現れないアプリをStatusBar Applicationと呼ぶ.Windowsでも同じだけど.

ふと思い立ってStatusBar Applicationの作り方を調べてみた.

XcodeからNew Project -> Cocoa Applicationを選択.

AppDelegate.hに以下を追加

@property (assign) IBOutlet NSMenu *statusMenu;
@property (strong, nonatomic) NSStatusItem *statusItem;

statusMenuとIBOutletの接続しておく.

MainMenu.xibにMenuを追加. 追加したMenuは3つアイテムを持っているのでそのうちの一つをQuitに変更. Interface BuilderのドックのApplicationのterminate:に接続しておく. 不要なxibのwindowオブジェクトは削除しておく(とっておいても構わない).

AppDelegate.mのapplicationDidFinishLaunchingに以下を追加.

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
  // Insert code here to initialize your application
  _statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
  [_statusItem setTitle:@"StatusBar"];
  [_statusItem setHighlightMode:YES];
  [_statusItem setMenu:self.statusMenu];
}

plistにApplication is agent (UIElement) を追加.ValueをYESに.こうすることでアプリははバックグラウンド動作するようになる.