У вас нет действительного графического контекста.UIGraphicsGetCurrentContext()
очевидно возвращено nil
.
Куда вы хотите рисовать?
Если вы хотите рисовать на экране, вам следует реализовать метод drawRect:
UIView
или один из его подклассов, и iOS вызывает этот метод (вызывая обновление части вашего экрана).Тогда у вас будет действительный графический контекст во время выполнения drawRect:
.
Если вы хотите нарисовать на пиксельную карту за пределами экрана, то вы должны создать графический контекст самостоятельно с помощью UIGraphicsBeginImageContext
или аналогичной функции..
РЕДАКТИРОВАТЬ:
Итак, для рисования в UIView необходимо создать UIView подкласс и переопределить drawRect:
@interfaceMyView : UIView {
}
@end
@implementation MyUIView
- (void) drawRect: (CGRect) rect
{
UIColor *currentColor = [UIColor blackColor];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2.0);
CGContextSetStrokeColorWithColor(context, currentColor.CGColor);
CGContextMoveToPoint(context, self.bounds.origin.x, self.bounds.origin.y);
CGContextAddLineToPoint(context, self.bounds.origin.x + self.bounds.size.x, self.bounds.origin.y + self.bounds.size.y);
CGContextStrokePath(context);
}
Затем вы открываете файл XIB (который вы, вероятно, уже имеете = в Interface Builder, добавляете туда UIView и выбираете MyUIView в качестве класса (первое поле на последней вкладке в окне инспектора).