진행률 회 전자를 표시하는 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
그러나, 스피너가 표시되지만 흰색 상자에 둘러싸여 :
이런 일이 발생하는 이유 어떤 생각, 또는 그것을 어떻게 해결? 전체 drawRect:
메서드를 주석 처리하면 결과가 동일합니다.
가능한 복제본 : http://stackoverflow.com/questions/2714951 – augurar