NSSlider を使用して ext を制御したいと思います。デバイス。ext。デバイスが遅い場合、デバイスがスライダーで指定された値に達するまで、スライダーは NSProgressIndicator WITHIN IT'S KNOB を表示します。ただし、バーもスピナーも表示されません (ノブはデフォルトの外観のままです)。助言がありますか?
@implementation SubclassedNSSliderCell
-(void)drawKnob:(NSRect)knobRect
{
[spinner setFrame:knobRect]; // as suggested by jtbandes
[super drawKnob:knobRect]; // keep the default knob
[spinner drawRect:knobRect]; // draw the spinner on top
}
-(void)drawBarInside:(NSRect)frame flipped:(BOOL)flipped
{
// stick with default bar
[super drawBarInside:frame flipped:flipped];
}
-(BOOL)_usesCustomTrackImage
{
return YES;
}
// default stuff here...
-(id)init // nothing interesting here...
{
if ((self = [super init]))
{
spinner = [[NSProgressIndicator alloc] initWithFrame:
NSMakeRect(0.f, 0.f, 20.f, 20.f)];
[spinner setStyle:NSProgressIndicatorSpinningStyle];
[spinner startAnimation:self];
}
return self;
}
@end
編集: このバージョンでは、最終的にノブの内側にスピナーが表示されます。ただし、スライダーを動かすと、スピナーのアニメーションが停止します。私はあきらめる...
-(void)drawKnob:(NSRect)knobRect
{
[super drawKnob:knobRect];
[[self controlView] addSubview:spinner];
[spinner setFrame:knobRect];
}