2014-01-23 54 views
1

我想創建一個顯示進度微調器的NSStatusItem。我的想法是劃分NSProgressIndicator並將其作爲NSView傳遞給setView:可可狀態欄中的進度微調器

// SpinnerView.h 
//#import <Cocoa/Cocoa.h> 

@interface SpinnerView : NSProgressIndicator { 
    NSStatusItem *_statusItem; 
    BOOL _isHighlighted; 
} 
- (id)initWithStatusItem:(NSStatusItem *)statusItem; 
@end  

// SpinnerView.m 
#import "SpinnerView.h" 

@implementation SpinnerView 

- (id)initWithStatusItem:(NSStatusItem *)statusItem { 
    CGFloat thickness = [[NSStatusBar systemStatusBar] thickness]; 
    NSRect frameRect = NSMakeRect(0.0, 0.0, thickness, thickness); 
    self = [super initWithFrame:frameRect]; 
    [self setStyle:NSProgressIndicatorSpinningStyle]; 
    [self setControlSize:NSSmallControlSize]; 
    _statusItem = statusItem; 
    return self; 
} 

- (void)drawRect:(NSRect)dirtyRect { 
    NSLog(@"drawRect"); 
    [_statusItem drawStatusBarBackgroundInRect:dirtyRect withHighlight:_isHighlighted]; 
    [super drawRect:dirtyRect]; 
} 

@end 

然而,當我這樣做,將顯示旋轉圖標,但被白框包圍:

Spinner in status bar

任何想法,爲什麼出現這種情況,或如何解決呢?如果我註釋掉整個drawRect:方法,結果是一樣的。

+0

可能的重複:http://stackoverflow.com/questions/2714951 – augurar

回答

0

您需要持續爲狀態項設置圖像。 使用計時器。

+1

不是我在問。我想使用'NSProgressIndicator',而不是寫我自己的。 – augurar