2010-10-23 36 views
8

Tôi đang tạo một ứng dụng sẽ hiển thị thanh tiến trình trong biểu tượng đế. Hiện tại tôi có điều này, nhưng nó không hoạt động:Thêm một NSProgressIndicator vào biểu tượng dock

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

Hoặc tôi phải tự vẽ trên đế? Ai giúp tôi với? Cảm ơn.

Trả lời

2

Chỉ cần có một vở kịch xung quanh với các mẫu mã DockTile: http://developer.apple.com/library/mac/#samplecode/DockTile/Introduction/Intro.html#//apple_ref/doc/uid/DTS10004391

tôi quản lý để có được một thanh NSProgress để hiển thị có bằng cách thêm

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 trong initWithFrame, nhưng nó vẫn còn màu xám trong bến tàu.

Tôi cũng tìm thấy trang này: http://osx.hyperjeff.net/Apps/apps?p=4&sub=22&l=1&u=on trong đó có "PMProgressIndicator" có thể hữu ích, nhưng tôi đã không đi sâu vào nó.

Hy vọng rằng sẽ giúp một chút, đăng lại tại đây nếu bạn tìm ra, tôi cũng muốn biết điều đó.

+0

tôi đã tìm ra rằng tôi cần phải hiển thị lại quan điểm của docktile mỗi khi thanh tiến trình đã thay đổi. (: –

+0

Thanh có màu xám cho bạn không? Khi tôi đi nhanh, nó luôn xám xịt đối với tôi ... – Oliver

5

Trong kết thúc tôi đã phải sử dụng đoạn mã sau là contentView là null:

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]; 
} 
Các vấn đề liên quan