为什么用这段代码(drawRect)渲染了 2 行?

Why are 2 lines rendered with this code (drawRect)?

我想知道为什么我的 window 看起来像这样:

当我调整 window 大小时,一条线保持拉伸,而另一条线保持静态大小和倾斜。

奇怪的是,每当调用 drawRect 时,我都会记录 window 的高度和宽度。

在应用程序启动时,drawRect 方法被调用了 4 次。

我看了看,发现这不是实际尺寸,于是稍微移动了 window 尺寸,得到了 真实的 结果。奇怪的是,它怎么跳得这么快。

奇怪的是"ghost"那条线怎么还在,我不知道哪一个是鬼!为什么?我更改了显示的线条的颜色...并且:

静态显示的是"generated"使用我的代码每个drawRect。

我用于 drawRect 的代码:

- (void)drawRect:(NSRect)dirtyRect
{
    NSLog(@"%f, %f", dirtyRect.size.height, dirtyRect.size.width);
    NSBezierPath *line = [NSBezierPath bezierPath];
    [line moveToPoint:NSMakePoint(NSMaxX([self bounds]), NSMaxY([self   bounds]))];
    //Sorry about formatting; SO doesn't make it easy to format.
    [line lineToPoint:NSMakePoint(NSMinX([self bounds]), NSMinY([self bounds]))];
    [line setLineWidth:_lwith]; /// Make it easy to see
    [_lineColor set]; /// Make future drawing the color of lineColor.

    [line stroke];
}

我需要一些解释,或者任何有帮助的东西!谢谢

自己回答

我做了什么?:我在情节提要中的另一个 NSView 中有我的 NSView 子类;子 NSView 静态保持在一定大小,而 NSView (parent/window) 自由移动。请记住,我将子 NSView 的实例保存在 ViewController 中。 我的 NSView 无论如何都会显示一条线,并且只有在我有它自己的实例时它才会改变颜色。

确保你的故事板已经全部检查过了,我的故事板现在是这样的:

注意只有一个 "graph" 视图是多么整洁 ;)