Добавление NSProgressIndicator на значок док-станции
Я создаю приложение, которое должно отображать индикатор выполнения в значке дока. В настоящее время у меня есть это, но это не работает:
NSProgressIndicator *progressIndicator = [[NSProgressIndicator alloc] initWithFrame:NSMakeRect(0.0f, 0.0f, 10.0f, 20.0f)];
[progressIndicator setStyle:NSProgressIndicatorBarStyle];
[progressIndicator setIndeterminate:NO];
[[[[NSApplication sharedApplication] dockTile] contentView] addSubview:progressIndicator];
[progressIndicator release];
Или я должен нарисовать это на доке сам? Может кто-нибудь мне помочь? Благодарю.
2 ответа
В конце я должен был использовать следующий код, так как contentView был нулевым:
docTile = [[NSApplication sharedApplication] dockTile];
NSImageView *iv = [[NSImageView alloc] init];
[iv setImage:[[NSApplication sharedApplication] applicationIconImage]];
[docTile setContentView:iv];
progressIndicator = [[NSProgressIndicator alloc]
initWithFrame:NSMakeRect(0.0f, 0.0f, docTile.size.width, 10.)];
[progressIndicator setStyle:NSProgressIndicatorBarStyle];
[progressIndicator setIndeterminate:NO];
[iv addSubview:progressIndicator];
[progressIndicator setBezeled:YES];
[progressIndicator setMinValue:0];
[progressIndicator setMaxValue:1];
[progressIndicator release];
[self setProgress:[NSNumber numberWithFloat:-1]];
}
- (void)setProgress:(NSNumber *)fraction {
if ( [fraction doubleValue] >= 0 ) {
[progressIndicator setDoubleValue:[fraction doubleValue]];
[progressIndicator setHidden:NO];
}
else
[progressIndicator setHidden:YES];
[docTile display];
}
Только что поиграл с примером кода DockTile: http://developer.apple.com/library/mac/#samplecode/DockTile/Introduction/Intro.html#//apple_ref/doc/uid/DTS10004391
Мне удалось получить панель NSProgress для отображения там, добавив
NSProgressIndicator *progressIndicator = [[NSProgressIndicator alloc] initWithFrame:NSMakeRect(0.0f, 0.0f, 100.0f, 20.0f)];
[self addSubview:progressIndicator];
[progressIndicator setStyle:NSProgressIndicatorBarStyle];
[progressIndicator setIndeterminate:NO];
[progressIndicator setMinValue:0];
[progressIndicator setMaxValue:100];
[progressIndicator setDoubleValue:25];
[progressIndicator release];
к SpeedometerView.m в initWithFrame, но он все еще был серым в доке.
Я также нашел эту страницу: http://osx.hyperjeff.net/Apps/apps?p=4&sub=22&l=1&u=on, на которой есть "PMProgressIndicator", который может помочь, но я не углубился в это.
Надеюсь, что это немного поможет, напишите сюда, если вы поймете, мне было бы интересно узнать также.