내가 여기 NSTextView
하고 정상적인 스크롤러의 크기의이 :
그리고 나는 텍스트 뷰의 스크롤 마우스를 가져 가면 여기 무슨 일이야 :
그러나, 나는 이것을하고 싶지 않아요 '를 확장 효과. 어떻게 제거 할 수 있습니까? 이 작업을 수행하는 방법을 검색하려고 시도했지만 아무 것도 찾을 수 없습니다. 난 그냥 사용자가 그것을 공중 경우에도 일반 scroller 크기 (얇은 하나) 모든 시간을 갖고 싶어. 이것이 가능한가?
감사합니다.NSTextView의 NSScrollView 스크롤러에서 마우스를 가리키면 펼치기 효과를 사용 중지하는 방법은 무엇입니까?
답변
나는 NSScroller를 서브 클래 싱하고 안정적인 스크롤 모양이되도록 – drawArrow:highlight:
/– drawKnobSlotInRect:highlight:
/– drawKnob
메소드를 오버라이드 (override)하는 것이 좋습니다.
P. 스크롤러에 대해 XIB 파일에 새 스크롤러 클래스를 설정하는 것을 잊지 마십시오.
- (void)drawKnob
{
// call the default implementation for Overlay Scrollers
if (self.scrollerStyle == NSScrollerStyleOverlay)
{
[super drawKnob];
return;
}
if (_style == NSScrollerKnobStyleLight || _style == NSScrollerKnobStyleDefault)
[[NSColor colorWithCalibratedWhite:1.0 alpha:0.8] setFill];
else [[NSColor colorWithCalibratedWhite:0 alpha:0.4] setFill];
// Note: you can specify the rect with fixed width here
NSRect knobRect = [self rectForPart:NSScrollerKnob];
// VERTICAL SCROLLER
NSInteger fullWidth = knobRect.size.width;
knobRect.size.width = round(knobRect.size.width/2);
knobRect.origin.x += (NSInteger)((fullWidth - knobRect.size.width)/2);
// draw...
NSBezierPath * thePath = [NSBezierPath bezierPath];
[thePath appendBezierPathWithRoundedRect:knobRect xRadius:4 yRadius:4];
[thePath fill];
}
//---------------------------------------------------------------
- (void)drawKnobSlotInRect:(NSRect)slotRect highlight:(BOOL)flag
{
// call the default implementation for Overlay Scrollers
// draw nothing for usual
if (self.scrollerStyle == NSScrollerStyleOverlay)
{
[super drawKnobSlotInRect:slotRect highlight:flag];
}
}
//---------------------------------------------------------------
- (void)drawArrow:(NSScrollerArrow)whichArrow highlight:(BOOL)flag
{
// call the default implementation for Overlay Scrollers
// draw nothing for usual
if (self.scrollerStyle == NSScrollerStyleOverlay)
{
[super drawArrow:whichArrow highlight:flag];
}
}
그 방법 내에서 무엇을 할 수 있는지 구체적으로 설명해 주시겠습니까? 내가 그 방법으로 놀았어요 그리고 좀있어,하지만 스크롤러는 스크롤러 (마우스) 떠난 후 숨기지 않을거야 스크롤러 –
샘플 코드로 내 대답을 업데이 트했습니다. 예, 오버레이가 아닌 스크롤러는 숨기지 않고 항상 표시합니다. iOS 스크롤러 동작을 시뮬레이트하고 싶다면 https://github.com/rheinfabrik/RFOverlayScrollView와 같은 것을 찾아야합니다. – UJey
정확한 스타일을 알고 싶지만이 카테고리가 도움이 될 수 있습니다.
@implementation NSScrollView (SetScrollStyle)
- (void) setHidingScroll
{
[self setScrollerStyle:NSScrollerStyleOverlay];
[[self verticalScroller] setControlSize: NSSmallControlSize];
[[self verticalScroller] setKnobStyle:NSScrollerKnobStyleDark];
[self setScrollerKnobStyle:NSScrollerKnobStyleDark];
[[self verticalScroller] setScrollerStyle:NSScrollerStyleOverlay];
}
및 사용
[scrollView setHidingScroll];
답변 주셔서 감사합니다. 그러나 스크롤러를 가져 가면 효과가 지속됩니다 –
왜 당신은 마우스 포인터를 칠 어렵다 끊임없이 너무 얇은 아이폰 OS 스타일의 스크롤바와 바이올린 사용자를 강제 : 여기 UPDATE
샘플 코드입니다 ?! 나는 그것이 "aethetics"을위한 것이 아니라고 진정으로 희망한다 !! –