2010-10-23 7 views
8

Estoy creando una aplicación que debe mostrar una barra de progreso en el icono de base. Actualmente tengo esto, pero no está funcionando:Agregar un NSProgressIndicator al icono de base

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]; 

¿O debo dibujarlo en el dock yo mismo? ¿Alguien puede ayudarme? Gracias.

Respuesta

2

acaba de tener un juego un poco con el código de ejemplo DockTile: http://developer.apple.com/library/mac/#samplecode/DockTile/Introduction/Intro.html#//apple_ref/doc/uid/DTS10004391

He conseguido una barra NSProgress para mostrar que hay añadiendo

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]; 

a SpeedometerView.m en initWithFrame, pero era todavía gris en el muelle.

También encontró esta página: http://osx.hyperjeff.net/Apps/apps?p=4&sub=22&l=1&u=on que tiene "PMProgressIndicator" que podría ayudar, pero yo no me zambullé.

Espero que ayude un poco, publica de nuevo aquí si lo descubres, me interesaría saber también.

+0

me di cuenta de que necesito para volver a mostrar la opinión de la docktile cada vez que la barra de progreso ha cambiado. (: –

+0

¿Estaba el listón gris para usted? Cuando tuve un intento rápido, siempre estaba en gris para mí ... – Oliver

5

En el acabado que tenía que utilizar el código siguiente como la contentView era nulo:

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]; 
} 
Cuestiones relacionadas