Нарисуйте линию в представлении: не рисует - PullRequest
1 голос
/ 28 августа 2010

Я пытаюсь нарисовать линию

мой код такой

-(void) drawRect:(CGRect) rect
{
    NSLog(@"Reached Draw ARect Function");

    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    CGContextSetLineWidth(ctx, 2.0);
    CGContextSetRGBStrokeColor(ctx, 1.0, 2.0, 0, 1); 
    CGContextMoveToPoint(ctx, 0, 0);
    CGContextAddLineToPoint( ctx, 100,100);

    CGContextStrokePath(ctx);

}

, и я звоню из viewDidLoad следующим образом

- (void)viewDidLoad {

    [super viewDidLoad];
    CGRect k = CGRectMake(1.0, 1.0, 100.0, 200.0);
    [self.view drawRect:k];

}

Может любойпомогите мне пожалуйста?

Ответы [ 3 ]

3 голосов
/ 28 августа 2010

Вы должны создать подкласс UIView и переместить код рисования линий в метод drawRect:, как вы делаете (просто надеясь, что это подкласс UIView, а не UIViewController)Также необходимо убедиться, что вы используете подкласс UIView в InterfaceBuilder для представления, в которое вы будете рисовать.Вы не должны вызывать этот метод самостоятельно.Если вы хотите что-то анимировать, вы должны позвонить [view setNeedsDisplay];, чтобы запросить перерисовку представления.... и ... вы должны добавить CGContextBeginPath(ctx); как раз перед тем, как позвонить CGContextMoveToPoint

0 голосов
/ 21 января 2013

Если есть необходимость позвонить

- (void)drawRect:(CGRect)rect

метод динамически, пока пользователь перетаскивает конкретное представление, просто поместите следующий код:

[self.view setNeedsDisplay];

тогда

- (void)drawRect:(CGRect)rect

метод будет вызываться автоматически

0 голосов
/ 28 августа 2010

Вы не можете вызвать drawRect напрямую.

Вместо этого вы вызываете setNeedsDisplay для вашего UIView, возвращаете и ждете, пока ОС вызовет drawRect UIView с соответствующим контекстом в более позднее время.

...