Рисование фигур в iOS с использованием Quartz 2D - ошибка недопустимого контекста - PullRequest
0 голосов
/ 15 октября 2011

Это, наверное, простая вещь. Я пытаюсь нарисовать свои первые фигуры в моем ViewDidLoad. Однако мой контекст всегда нулевой, я получаю «con = 0x0». Я не уверен, правильно ли я это использую. Я вставил свой код ниже.

- (void)viewDidLoad
{
    [super viewDidLoad];

    // obtain the current graphics context

    CGContextRef con = UIGraphicsGetCurrentContext();

    // draw a black (by default) vertical line, the shaft of the arrow

    CGContextMoveToPoint(con, 100, 100);
    CGContextAddLineToPoint(con, 100, 19);
    CGContextSetLineWidth(con, 20);
    CGContextStrokePath(con);

    // draw a red triangle, the point of the arrow

    CGContextSetFillColorWithColor(con, [[UIColor redColor] CGColor]);
    CGContextMoveToPoint(con, 80, 25);
    CGContextAddLineToPoint(con, 100, 0);
    CGContextAddLineToPoint(con, 120, 25);
    CGContextFillPath(con);

    // snip a triangle out of the shaft by drawing in Clear blend mode

    CGContextMoveToPoint(con, 90, 101);
    CGContextAddLineToPoint(con, 100, 90);
    CGContextAddLineToPoint(con, 110, 101);
    CGContextSetBlendMode(con, kCGBlendModeClear);
    CGContextFillPath(con);

}

А при отладке значение "con" равно:

con = (CGContext)0x0

1 Ответ

2 голосов
/ 15 октября 2011

Проблема с вашим кодом в том, что вы пытаетесь рисовать, когда вы не должны.

Вы можете либо переместить свой код рисования в метод drawRect: в своем представлении, потому что операционная система готовит контекст, в который вы можете рисовать перед вызовом drawRect:, или вы можете создать свой собственный контекст и рисовать в нем, экспортировать это как изображение и отображать его с помощью UIImageView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...