Я создаю пользовательский NSSlider с пользовательским NSSliderCell. Все работает красиво, кроме ручки. Когда я перетаскиваю его до максимального значения, ручка обрезается, я могу видеть только 50% изображения ручки.NSSlider NSSliderCell clipping custom knob
При назначении моего пользовательского 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];
}
рисует ручку с 50% обрезаются и не по центру панели без +20.0 – mootymoots
BTW - это был ответ на эту проблему? Я удалил код, который вы упомянули, и это не имело никакого значения. – mootymoots
Я предлагаю вам попробовать переопределить -knobRectFlipped: и вычислить ручку rect на основе текущего значения ползунка, а затем не выполнять никаких других настроек в -drawKnob :.Моя причина в том, чтобы предположить, что, возможно, контекст чертежа привязывается к knobRect прямо перед вызовом -drawKnob:. Можно ли увидеть скриншоты слайдера при средних и максимальных значениях? –