我正在制作用于NSScrollView的自定义NSScroller。但是当NSScroller的任何超级视图启用Core Animation时。我得到这个绘图问题,这是一个巨大的麻烦。每当我滚动滚动视图的角落时,滚动条剪辑。但是如果滚动条开始在角落绘制,则滚动条部分停留在该角落。什么可能导致这个问题?我有太多的代码要显示在这里。但这是我的绘图代码:
NSRect knobRect = [self rectForPart:NSScrollerKnob];
NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:knobRect
xRadius:CornerRadius
yRadius:CornerRadius];
[path setLineWidth:2];
[[NSColor colorWithDeviceRed:0.114 green:0.114 blue:0.114 alpha:0.3] set];
[path fill];
[[NSColor colorWithDeviceWhite:1.0
alpha:0.100] set];
// Clip drawing to this path; draw nothing outwith the path.
[path addClip];
[path stroke];
我已经试图摆脱除填充之外的所有东西,但它没有用。如果在调用setFloatValue时在超级视图上调用setNeedsDisplay:YES,则此问题就会消失。
Clipping Issue http://idkz.org/b814ee5c875c9f44cc2d1345e4489420
答案 0 :(得分:1)
[self setArrowsPosition:NSScrollerArrowsNone];
它神奇地起作用:D
编辑,但是当我拖动滚动条时,我得到了类似的效果。 :'(无论如何清除图形而不重绘滚动视图本身?:(
答案 1 :(得分:1)
您可能知道这一点,但在您的情况下,以下部分应解决您的绘图问题:
-(BOOL)isOpaque {
return NO;
}