Показаны сообщения с ярлыком NSMenu. Показать все сообщения
Показаны сообщения с ярлыком NSMenu. Показать все сообщения

9 мар. 2014 г.

StatusBar приложение

Простой пример приложения которое имеет свое меню в статус баре OS X.

Создадим новый проект в Xcode. Перейдем в Interface Builder и добавим до нашего созданного окна "меню" (Выберем в списке контролов интерфейса Menu и положим где-то рядом с окном.
Отредактируем элементы списка меню:

- Показать окно;
- Выход.

В AppDelegate.h добавим следующие строки:

IBOutlet NSMenu *statusBarMenu;
NSStatusItem *statusBarItem;

- (IBAction)showWindow:(id)sender;
- (IBAction)quitApp:(id)sender;

Соединим наш оутлет NSMenu с нашим добавленным меню. Наши экшены соотвествующими элементами меню.

В AppDelegate.m в методе awakeFromNib напишем следующий код:

statusBarItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
[statusBarItem setMenu:statusBarMenu];
[statusBarItem setTitle:@"МоеМеню"];
[statusBarItem setHighlightMode:YES];

В экшене showWindow пишем следующее:

[NSApp activateIgnoringOtherApps:YES];
[_window makeKeyAndOrderFront:nil];

Код будет показывать нам наше скрытое приложение, будь оно свернуто или закрыто.

В экшене quitApp пишем:

[NSApp terminate:nil];

Ну вот и все.
Также можно добавить иконку к нашему меню. Если убрать setTitle, то у нас будет вместо надписи в статус баре только иконка. Иконка должна быть соотвествующих размеров как для обычных экранов так и для ретина-экранов.