Я создаю пользовательский NSSlider с пользовательским NSSliderCell. Все работает красиво, кроме ручки. Когда я перетаскиваю его до максимального значения, когда ручка обрезается, я могу видеть только 50% изображения ручки.
При назначении моего пользовательского NSSliderCell я устанавливаю knobThickness на ширину изображения, которое я использую в качестве ручки . Я предположил (я ошибочно полагаю), что он учтет это и предотвратит обрезку?
Есть идеи, что я делаю неправильно? Ползунок достигает значения maxValue только тогда, когда ручка обрезается на 50%, поэтому он не перемещается без добавления какого-либо значения.
- (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];
}