Почему существует недопустимая ошибка контекста?

Вот код, который я использую для рисования:

- (void) drawSomething
{

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetRGBStrokeColor(context, 1, 0, 0, 1);
    CGContextSetLineWidth(context, 6.0);

    CGContextMoveToPoint(context, 100.0f, 100.0f);
    CGContextAddLineToPoint(context, 200.0f, 200.0f);
    CGContextStrokePath(context);

    NSLog(@"draw");

}

Но я получил ошибку как это:

[Session started at 2010-04-03 17:51:07 +0800.]
Sat Apr  3 17:51:09 MacBook.local MyApp[12869] <Error>: CGContextSetRGBStrokeColor: invalid context
Sat Apr  3 17:51:09 MacBook.local MyApp[12869] <Error>: CGContextSetLineWidth: invalid context
Sat Apr  3 17:51:09 MacBook.local MyApp[12869] <Error>: CGContextMoveToPoint: invalid context
Sat Apr  3 17:51:09 MacBook.local MyApp[12869] <Error>: CGContextAddLineToPoint: invalid context
Sat Apr  3 17:51:09 MacBook.local MyApp[12869] <Error>: CGContextDrawPath: invalid context

Почему это предлагает мне говорить, что контекст делается недопустимым?

7
задан Tattat 3 April 2010 в 09:55
поделиться

2 ответа

Как и в , в документации сказано:

Текущий графический контекст по умолчанию равен нулю. Перед вызовом метода drawRect: объекты представления помещают допустимый контекст в стек, делая его текущим.

Итак, вам нужно поместить этот код в метод drawRect

12
ответ дан 6 December 2019 в 09:18
поделиться

Из мой ответ на этот аналогичный вопрос :

Если это нужно нарисовать на экране , вам нужно будет найти код рисования в методе -drawRect: UIView (или –drawInContext: CALayer). Чтобы обновить его содержимое, вам нужно вызвать -setNeedsDisplay в UIView или CALayer. Попытка рисования в любое другое время вызовет ошибку «недопустимый контекст», которую вы видите.

См. Также этот вопрос .

8
ответ дан 6 December 2019 в 09:18
поделиться