Cocoa 在NSScrollView中使用自定义视图时的工件
我有一个滚动视图,显示了许多自定义视图 在该自定义视图中,我使用自己的类,因此可以使用drawRect方法在视图底部绘制一条线Cocoa 在NSScrollView中使用自定义视图时的工件,cocoa,Cocoa,我有一个滚动视图,显示了许多自定义视图 在该自定义视图中,我使用自己的类,因此可以使用drawRect方法在视图底部绘制一条线 @interface MyListItemView : NSView 下面是我对drawRect的实现 @implementation MyListItemView -(void)drawRect:(NSRect)rect { [NSGraphicsContext saveGraphicsState]; NSBezierPath * path;
@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
这将按预期绘制线条,但当我滚动容器时,会出现瑕疵,如下图右侧所示:
我试着保存和恢复图形上下文,但这没有什么区别,而且看起来不需要代码。我错过了什么?我在散步时受到了灵感的冲击 我正在我的视野边缘画一条线。看起来其中的一些内容正在视图外绘制(可能是由于抗锯齿),并且没有得到正确的清理 我所需要做的就是将我的线条向上移动半个像素,将线条代码更改为:
[path moveToPoint: NSMakePoint(0, 0.5)];
[path lineToPoint: NSMakePoint(rect.size.width, 0.5)];
我在散步时灵感涌上心头 我正在我的视野边缘画一条线。看起来其中的一些内容正在视图外绘制(可能是由于抗锯齿),并且没有得到正确的清理 我所需要做的就是将我的线条向上移动半个像素,将线条代码更改为:
[path moveToPoint: NSMakePoint(0, 0.5)];
[path lineToPoint: NSMakePoint(rect.size.width, 0.5)];