Использование NSTimer для создания обратного отсчета - PullRequest
0 голосов
/ 25 февраля 2011

У меня есть значение int, представляющее обратный отсчет до события (отображается представление).В настоящее время я делаю это:

- (void) buttonTapped:(id)sender {
    [self performSelector:@selector(displayView) afterDelay:countdownValue];
}

Я хотел бы сделать следующее:

Когда кнопка нажата, измените цвет оттенка моей панели навигации на красный,желтый, пропорционально зеленый, пока не истечет обратный отсчет, затем отобразите представление.

Так, например, если мой отсчет составляет 3 секунды, одну секунду для каждого цвета, если это 5 секунд, 1,666 для каждого цвета.

Могу ли я использовать NSTimer для планирования этого?

После того, как представление отобразится, таймер должен будет аннулироваться.

Спасибо

1 Ответ

3 голосов
/ 25 февраля 2011
float count_down = 5.0;
[NSTimer scheduledTimerWithTimeInterval: count_down*(1.0/3.0) target: self
                               selector: @selector(changeToRed:) userInfo: nil repeats: NO];
[NSTimer scheduledTimerWithTimeInterval: count_down*(2.0/3.0) target: self
                               selector: @selector(changeToGreen:) userInfo: nil repeats: NO];
[NSTimer scheduledTimerWithTimeInterval: count_down target: self
                               selector: @selector(changeToBlue:) userInfo: nil repeats: NO];

И обратные вызовы (делайте что хотите там):

-(void) changeToRed:(NSTimer*) t {
    NSLog(@"red");
}

-(void) changeToGreen:(NSTimer*) t {
    NSLog(@"green");
}

-(void) changeToBlue:(NSTimer*) t {
    NSLog(@"blue");
}
...