カスタム NSSliderCell を使用してカスタム NSSlider を作成しています。ノブ以外は全て綺麗に動いています。ノブがクリッピングされている最大値までドラッグすると、ノブの画像の 50% しか表示されません。
カスタム NSSliderCell を割り当てるとき、ノブとして使用している画像の幅にノブの厚さを設定しています。私はそれを考慮してクリッピングを止めると思いました(間違っていると思います)?
私が間違っていることはありますか?スライダーは、ノブが 50% でクリップされている場合にのみ maxValue に達しているため、値を追加せずに移動することはありません。
- (void)drawKnob:(NSRect)knobRect {
NSImage * knob = _knobOff;
knobRectVar = knobRect;
[[self controlView] lockFocus];
[knob
compositeToPoint:
NSMakePoint(knobRect.origin.x+4,knobRect.origin.y+knobRect.size.height+20)
operation:NSCompositeSourceOver];
[[self controlView] unlockFocus];
}
- (void)drawBarInside:(NSRect)rect flipped:(BOOL)flipped {
rect.size.height = 8;
[[self controlView] lockFocus];
NSImage *leftCurve = [NSImage imageNamed:@"customSliderLeft"];
[leftCurve drawInRect:NSMakeRect(5, 25, 8, 8) fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1];
NSRect leftRect = rect;
leftRect.origin.x=13;
leftRect.origin.y=25;
leftRect.size.width = knobRectVar.origin.x + (knobRectVar.size.width/2);
[leftBarImage setSize:leftRect.size];
[leftBarImage drawInRect:leftRect fromRect: NSZeroRect operation: NSCompositeSourceOver fraction:1];
[[self controlView] unlockFocus];
}