2013-02-14 2 views
1

Я пытаюсь изучить основы кварца и не понимаю, почему это не сработает - это должно переместить красный прямоугольник вправо, когда кнопка нажата, летучая мышь на моменте, это не сделать что-нибудь - в «NSLog (» помощь »), было, чтобы попытаться выяснить, если кнопка функционирует - благодаряПеремещение Прямоугольник в кварце

@implementation QuartzView 

-(IBAction)moveRight:(id)sender{ 

    NSLog(@"Help"); 

    lR += 50; 

} 

- (id)initWithFrame:(NSRect)frameRect 
{ 
    self = [super initWithFrame:frameRect]; 
    if (self) { 

    } 

    return self; 
} 

- (void)drawRect:(NSRect)dirtyRect 
{ 
    CGContextRef myContext = [[NSGraphicsContext // 1 
           currentContext] graphicsPort]; 

    // Drawing code here. 
    CGContextSetRGBFillColor (myContext, 1, 0, 0, 1);// 3 
    CGContextFillRect (myContext, CGRectMake (lR, 0, 200, 100)); 

    [self setNeedsDisplay:YES]; 
} 

@end 

Благодаря

+0

блин, я имел в виду последнюю строку, чтобы сказать «CGRectMake (Lr, 0, 200, 100)); – user2073270

+0

Fixed это для вас Вы можете редактировать свой пост, кстати – Jeremy

ответ

0

Попробуйте [self setNeedsDisplay] внутри moveRight после увеличения Lr!.

+1

NSView setNeedsDisplay:... Берет ли аргумент –

1

Вы не хотите вызывать setNeedsDisplay в drawRect; это просто говорит: «Теперь, когда я нарисовал представление, заставьте меня сделать это снова!»

Вы хотите вызвать setNeedsDisplay в своем действии, чтобы обновить экран после перемещения прямоугольника.

+0

Ok Я пробовал это, но это все еще не работает, кажется, что, несмотря на «[self setNeedsDisplay: YES];» дисплей не сбрасывается .... есть ли какой-либо трюк, который я не знаю, чтобы получить прямоугольник для перерисовки? – user2073270