0

我有一个 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);
}

这每次都会渲染一条线,但渲染的线永远不会留在屏幕上。

我将如何在屏幕上渲染一条新线来保留先前渲染的线?

4

1 回答 1

0

每次视图需要绘制时都会调用 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);
    }

}
于 2013-05-01T09:54:02.743 回答