Ios CGContext不保留渲染线

Ios CGContext不保留渲染线,ios,core-graphics,cgcontext,Ios,Core Graphics,Cgcontext,我有一个drawRect实现: - (void)drawRect:(CGRect)rect { CGContextRef ctx = UIGraphicsGetCurrentContext(); if (self.colorToRender) { CGContextSetStrokeColorWithColor(ctx, self.colorToRender.CGColor); } else { CGContext

我有一个drawRect实现:

- (void)drawRect:(CGRect)rect
{
    CGContextRef ctx = UIGraphicsGetCurrentContext();

    if (self.colorToRender)
    {
        CGContextSetStrokeColorWithColor(ctx, self.colorToRender.CGColor);
    }
    else
    {
        CGContextSetStrokeColorWithColor(ctx,[UIColor whiteColor].CGColor);
    }

    CGContextBeginPath(ctx);
    CGContextMoveToPoint(ctx, self.center.x, self.center.y);
    CGContextAddLineToPoint(ctx, self.pointToRender.x, self.pointToRender.y);
    CGContextStrokePath(ctx);
}
这将每次渲染一条线,但渲染的线永远不会留在屏幕上


如何将新线渲染到屏幕上并保留以前渲染的线?

drawRect会在每次视图需要绘制时调用。如果要绘制多条线,则必须使用drawRect方法再次绘制每条线

添加线时,将线添加到数组中,可以在drawRect方法中使用该数组来确定要绘制的线

- (void)drawRect:(CGRect)rect
{
    CGContextRef ctx = UIGraphicsGetCurrentContext();

    if (self.colorToRender)
    {
        CGContextSetStrokeColorWithColor(ctx, self.colorToRender.CGColor);
    }
    else
    {
        CGContextSetStrokeColorWithColor(ctx,[UIColor whiteColor].CGColor);
    }


    // For each line you want to draw:
    for (MyLine *thisLine in myLines) {
        CGContextMoveToPoint(ctx, thisLine.startPoint.x, thisLine.startPoint.y);
        CGContextAddLineToPoint(ctx, thisLine.endPoint.x, thisLine.endPoint.y);
        CGContextStrokePath(ctx);
    }

}

很可能您的视图的clearContextBeforeDrawing标志已设置(这是默认值,在XIB中也默认勾选)->我正在为每一行调用setNeedsDisplay,现在我已在views initWithFrame方法中将clearContextBeforeDrawing设置为NO。我得到了同样的结果。我最终使用了一个BiezerPath,它似乎工作得更好。@Helium3您确定调用了一个,而不是
initWithCoder:
(即来自XIB)吗?