Я работаю над 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;
}