Ошибка «неверный контекст 0x0» при использовании функций CGContext * - PullRequest
5 голосов
/ 28 октября 2011
/*  Adding the Path */
UserGraphBuff = UIGraphicsGetCurrentContext();

CGContextSetRGBStrokeColor(UserGraphBuff,5,10,0,1);
CGContextSetLineWidth(UserGraphBuff, 2 );

CGContextBeginPath(UserGraphBuff);  

//line to last user point
CGContextAddLineToPoint(UserGraphBuff, (*xVal)[sizeof xVal / sizeof *xVal - 1], (*yNewVal)[sizeof yNewVal / sizeof *yNewVal - 1]);
//line to rest of user points in reverse order
for (int i = sizeof xVal / sizeof *xVal - 1; i > -1; i--){
    CGContextAddLineToPoint(UserGraphBuff, (*xVal)[i], (*yNewVal)[i]);
}

//EOFill
CGContextEOFillPath(UserGraphBuff);

Выше приведен код, через который я пытаюсь работать.Он должен делать то, что говорит CGContext, но я ничего не получаю. Я получаю эту ошибку:

Fri Oct 28 13:18:40 case.app testApplication[4127] <Error>: CGContextSetRGBStrokeColor: invalid context 0x0
Fri Oct 28 13:18:40 case.app testApplication[4127] <Error>: CGContextSetLineWidth: invalid context 0x0
Fri Oct 28 13:18:40 case.app testApplication[4127] <Error>: CGContextBeginPath: invalid context 0x0
Fri Oct 28 13:18:40 case.app testApplication[4127] <Error>: CGContextAddLineToPoint: invalid context 0x0
Fri Oct 28 13:18:40 case.app testApplication[4127] <Error>: CGContextDrawPath: invalid context 0x0

Я ссылаюсь на CGContextRef в моем заголовочном файле.

Я не думаю, что достаточно хорошо понимаю CGContext и не знаю, каким должен быть CGContextRef.

1 Ответ

18 голосов
/ 28 октября 2011

Чтобы ваш код работал, он должен быть выполнен в методе drawRect вашего подкласса UIView (и вы не вызываете drawRect напрямую - он вызывается ОС, когда ему нужен UIView длясделать сам)Вы, вероятно, пытаетесь запустить этот код из сенсорного события или из viewDidLoad или что-то в этом роде.

...