Неисправность рисования линий CoreGraphics в методе drawRect () - PullRequest
1 голос
/ 05 февраля 2012

Я работаю над курсом Stanford CS193p и пытаюсь нарисовать график.Рисование осей работает, но я не могу нарисовать сам график.Я получаю сообщение

CGContextAddLineToPoint: no current point.

, когда пытаюсь нарисовать.Вот код.

- (void)drawRect:(CGRect)rect
{
NSLog(@"Drawing Graph View");
CGPoint origin = CGPointMake(20, 350);
CGRect rect2 = CGRectMake(origin.x, origin.y, 250, -250);
[AxesDrawer drawAxesInRect:rect2 originAtPoint:origin scale:[self scale]];

CGContextRef context = UIGraphicsGetCurrentContext();



UIGraphicsPushContext(context);

CGContextSetLineWidth(context, 2);
[[UIColor redColor] setStroke];


CGContextMoveToPoint(context, origin.x, origin.y);
for (CGFloat i=0; i<250; i++) {

    CGFloat yChange = [self.dataSource deltaY:self];

    CGContextAddLineToPoint(context, origin.x+i, origin.y-yChange);

    CGContextStrokePath(context);

}

UIGraphicsPopContext();

}

Ответы [ 2 ]

5 голосов
/ 05 февраля 2012

Вы должны поместить CGContextStrokePath(context); вне цикла for.В противном случае он будет создавать новый путь при каждом запуске цикла, и это не удастся.

2 голосов
/ 05 февраля 2012

У вас нет проблем с:

CGRectMake(origin.x, origin.y, 250, -250)

Вы указываете отрицательную высоту!

...