我有一个滚动视图,显示了许多自定义视图。
在该自定义视图中,我使用自己的类,因此我可以使用drawRect方法在视图的底部绘制一条线。
@interface MyListItemView : NSView
这是我对drawRect的实现
@implementation MyListItemView
-(void)drawRect:(NSRect)rect
{
[NSGraphicsContext saveGraphicsState];
NSBezierPath * path;
path = [NSBezierPath bezierPath];
[path moveToPoint: rect.origin];
[path lineToPoint: NSMakePoint(rect.size.width, 0)];
[path setLineWidth:1];
[[NSColor grayColor] set];
[path stroke];
[NSGraphicsContext restoreGraphicsState];
}
@end
这会按预期绘制线条,但是当我滚动容器时,我会看到出现的文物,如下图所示:
我尝试保存并恢复图形上下文,但这没有任何区别,并且看起来不需要代码。我错过了什么?
答案 0 :(得分:1)
在散步的时候灵感打击了我。
我在视线的最边缘画了一条线。看起来其中一些是在视图外部绘制的(可能是由于抗锯齿)并且没有得到正确的清理。
我需要做的就是将我的行向上移动半个像素,将我的行代码更改为:
[path moveToPoint: NSMakePoint(0, 0.5)];
[path lineToPoint: NSMakePoint(rect.size.width, 0.5)];