NSSlider Пользовательский регулятор NSSliderCell обрезки

Я создаю пользовательский 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];

}
5
задан mootymoots 26 January 2011 в 18:03
поделиться