我想创建一个显示进度条的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:
方法,结果将是相同的。 最佳答案
您只需要连续设置状态项目的图像即可。
使用计时器。