2014-01-23 3 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

관련 문제