사용자 지정 NSSliderCell을 사용하여 사용자 지정 NSSlider를 만듭니다. 손잡이가 아닌 모든 것이 아름답게 작동합니다. 최대 값으로 끌면 손잡이가 잘립니다. 손잡이 이미지의 50 % 만 볼 수 있습니다.NSSlider NSSliderCell 사용자 지정 노브 자르기
내 사용자 지정 NSSliderCell을 할당 할 때 knob.Hickness를 노브로 사용하고있는 이미지 너비로 설정합니다. 나는 그것을 (잘못된 것으로 생각한다) 그것이 그것을 고려하고 클리핑 (clipping)을 막을 것이라고 생각했다.
내가 잘못하고있는 아이디어가 있습니까? 손잡이가 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];
}
이 50 % 손잡이가 잘린 및 BTW 20.0 – mootymoots
없이 줄을 중심으로하지립니다 -이 문제에 대한 답이었다 : 여기 내 솔루션입니다? 내가 언급 한 코드를 삭제했는데 아무런 차이가 없었습니다. – mootymoots
-knobRectFlipped :를 재정의하고 슬라이더의 현재 값을 기반으로 노브 rect를 계산 한 다음 -drawKnob :에서 다른 조정을 수행하지 마십시오.내 제안 이유는 아마도 드로잉 컨텍스트가 -drawKnob :이 호출되기 바로 전에 knobRect에 클립되고 있다는 것입니다. 중간 값과 최대 값에서 슬라이더의 일부 스크린 샷을 볼 수 있습니까? –