为什么使用此代码(drawRect)呈现2行?

时间:2016-12-29 07:52:34

标签: objective-c macos graphics drawrect

我想知道为什么我的窗口看起来像这样: 2 lines

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

As you can see, one of the lines keeps to the edges.

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

在应用程序开始时,drawRect方法被调用4次。 strange

我看了这个,发现它不是实际大小,并且稍微移动了窗口大小并获得了真实结果。奇怪的是,它是如何快速跳跃的。

enter image description here

奇怪的部分是“幽灵”线仍然存在,我不知道哪一个是幽灵!为什么?我更改了显示的行的颜色......和:

enter image description here

静态显示的那个是使用我的代码每个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];
}

我要求一些解释,或者只是有所帮助!感谢

1 个答案:

答案 0 :(得分:1)

自我回答

我做了什么?:我在故事板中的另一个NSView中有我的NSView子类;子NSView静态保持一定的大小,而NSView(父/窗)自由移动。请记住,我在我的ViewController中保存了我的NSView实例。 我的NSView无论如何都显示了一条线,如果我有自己的实例,它只会改变颜色。

确保您的故事板都已经过检查,我现在看起来像这样: enter image description here

请注意,只有一个"图表"查看;)