Отображение NSProgressIndicatorSpinningStyle в NSStatusItem и его скрытие - PullRequest
2 голосов
/ 21 февраля 2011

Я работаю над NSStatusItem.Мне удалось использовать setImage и setAlternateImage для работы.Когда пользователь выбирает что-то, ему требуется некоторое время, чтобы выполнить то, что он делает.Пока он что-то делал, я пытался перейти с обычного изображения на счетчик.То, что я делаю сейчас, заключается в том, что я создал представление, установил для него NSProgressIndicator и затем использовал

[statusItem setView: viewWithSpinner];

Кажется, это работает, пока я не попытаюсь удалить его и отобразить исходное изображение.Единственный способ, которым я могу это скрыть, это сделать

[statusItem setView: nil];

, но это все ломает, оригинальные изображения не возвращаются.Я думаю, потому что больше нет представления.Кажется, я не могу сохранить исходный вид перед установкой viewWithSpinner.

Может кто-нибудь посоветовать мне способ сделать это?

Итак ...

NSStatusItem *myStatusItem;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[myStatusItem setImage:statusImage];
[myStatusItem setHighlightMode:YES];
[myStatusItem setAlternateImage:statusImageSel];
[myStatusItem setMenu:myStatusMenu];
etc...
[self createSpinner];
}

-(void)createSpinner
{
//to overcome the white border problem

NSView *progressIndicatorHolder = [[NSView alloc] init];

NSProgressIndicator *progressIndicator = [[NSProgressIndicator alloc] init];

[progressIndicator setBezeled: NO];
[progressIndicator setStyle: NSProgressIndicatorSpinningStyle];
[progressIndicator setControlSize: NSSmallControlSize];
[progressIndicator sizeToFit];
[progressIndicator setUsesThreadedAnimation:YES];

[progressIndicatorHolder addSubview:progressIndicator];

[progressIndicator startAnimation:self];

//for testing purposes
[[myStatusItem view] addSubview:progressIndicatorHolder];

spinnerView = progressIndicatorHolder;
}

Ответы [ 2 ]

1 голос
/ 12 марта 2013

Я предлагаю сохранить старый вид с помощью [statusItem view] перед установкой любого другого вида. Прежде чем вернуться в обычное меню, установите для старого сохраненного представления значение statusItem с помощью метода setView.

0 голосов
/ 09 октября 2011

Если вы хотите просто скрыть представление NSStatusItem, просто позвоните [yourStatusItem setLength:0].

...