Задача рисования NSRect - PullRequest
       5

Задача рисования NSRect

1 голос
/ 13 сентября 2011

Моя проблема в том, что когда действие UpdateRect вызывает метод drawRect, мой прямоугольник не обновляет высоту!

Когда я нажимаю на кнопку, я ожидаю увидеть высоту моего прямоугольника до 20, но она остаетсядо 10. Почему?

@implementation Graphic_view

int height = 10; //The height of my rect.

-(IBAction)updateRect:(id)sender {
    height += 10;
    //Calling the drawrect method
    [self performSelector:@selector(drawRect:)];
}

-(void)drawRect:(NSRect)dirtyRect {
    NSLog(@"DrawRect has been called !");
    // Drawing code here.
    NSRect viewBounds = [self bounds];
    NSColor *color = [NSColor orangeColor];
    [colore set];
    NSRectFill(viewBounds);
    NSRect myRect;
    myRect.origin.x = 20;
    myRect.origin.y = 20;
    myRect.size.height = height;
    myRect.size.width = 100;
    NSColor *whiteColor = [NSColor whiteColor];
    [whiteColor set];
    NSRectFill(myRect);
} 

@end

1 Ответ

7 голосов
/ 13 сентября 2011

Вы никогда не должны звонить drawRect: самостоятельно. Вместо этого позвоните setNeedsDisplay:

-(IBAction)updateRect:(id)sender {
    height += 10;
    // Schedule the drawrect method
    [self setNeedsDisplay:YES];
}

Примечание. Эквивалент для iOS - setNeedsDisplay без аргумента.

...