Вот код, который я использую для рисования:
- (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
Почему это предлагает мне говорить, что контекст делается недопустимым?
Как и в , в документации сказано:
Текущий графический контекст по умолчанию равен нулю. Перед вызовом метода drawRect: объекты представления помещают допустимый контекст в стек, делая его текущим.
Итак, вам нужно поместить этот код в метод drawRect
Из мой ответ на этот аналогичный вопрос :
Если это нужно нарисовать на экране , вам нужно будет найти код рисования в методе -drawRect:
UIView (или –drawInContext:
CALayer). Чтобы обновить его содержимое, вам нужно вызвать -setNeedsDisplay
в UIView или CALayer. Попытка рисования в любое другое время вызовет ошибку «недопустимый контекст», которую вы видите.
См. Также этот вопрос .