Как заставить работать метод Drawing в классе View с помощью CGContextRef?

У меня есть эти 2 метода в классе View. метод drawRect всегда вызывается при инициализации представления. Но я не могу заставить работать метод drawLine. Он ничего не делает, когда его вызывают. Должен ли я иметь дело с cgimagecontext или чем-то в этом роде? пожалуйста помоги!!

- (void)drawRect:(CGRect)rect {
    // Drawing code
    // Drawing code
    CGContextRef contextRef = UIGraphicsGetCurrentContext();
    //CGContextSetRGBFillColor(contextRef, 0, 0, 255, 1);
    CGContextSetRGBStrokeColor(contextRef, 0, 0, 0, 1);
    CGContextSetLineWidth(contextRef, 5.0);
    CGContextBeginPath(contextRef);
    CGContextMoveToPoint(contextRef, 0, 0);
    CGContextAddLineToPoint(contextRef, 320, 480);
    CGContextStrokePath(contextRef);
}

    -(void)drawLine:(CGPoint)from to:(CGPoint) to {
    // Drawing code
    CGContextRef contextRef = UIGraphicsGetCurrentContext();
    //CGContextSetRGBFillColor(contextRef, 0, 0, 255, 1);
    CGContextSetRGBStrokeColor(contextRef, 0, 128, 0, 1);
    CGContextSetLineWidth(contextRef, 5.0);
    CGContextBeginPath(contextRef);
    CGContextMoveToPoint(contextRef, 0, 0);
    CGContextAddLineToPoint(contextRef, 320, 50);
    CGContextStrokePath(contextRef);

}

person RoundOutTooSoon    schedule 27.03.2010    source источник


Ответы (2)


Вы вызываете -drawLine изнутри -drawRect? Вам нужно сделать весь рисунок в представлении в вашем методе drawRect. Если вы вызываете -drawLine откуда-то еще, это не сработает.

person Ben Gottlieb    schedule 27.03.2010

Вы можете рисовать только в drawrect. Если вы хотите рисовать пользовательские линии с помощью метода drawLine, замените жестко закодированные точки в drawrect переменными. Затем вы можете установить эти переменные в методе drawLine и, наконец, вызвать [self setNeedsDisplay].

person RunLoop    schedule 27.03.2010