Objective-C, плановый таймер с временным интервалом, прогрессивное увеличение - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть определенный индикатор выполнения, который выглядит следующим образом:

NSInteger progressValue;
NSTimer *timerObject;

- (void)incrementProgressBar {
    // Increment the progress bar value by 1
    [progressBar incrementBy:1.0];
    progressValue++;
    [progressBar setDoubleValue:progressValue];
}

И затем я называю его следующим образом:

[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(incrementProgressBar) userInfo:nil repeats:YES];

Мой вопрос: можно ли увеличить scheduledTimerWithTimeInterval за каждую итерацию?

Так, например, если progressValue было 1, тогда scheduledTimerWithTimeInterval было бы 1, но если progressValue было 2, тогда scheduledTimerWithTimeInterval было бы 2 и т. Д.

По сути, я пытаюсь постепенно замедлять прогресс-бар по мере приближения к 100. Возможно, есть какой-то лучший способ или рекомендация для этого, но это, по сути, то, что я ищу, спасибо.

1 Ответ

1 голос
/ 05 ноября 2019

Используйте -fireDate:(NSDate*) для установки следующей даты запуска NSTimer. Для дальнейшего объяснения API, зайдите здесь .

Например, вы можете добиться этого следующим образом:

NSDate *currentDate = [NSDate date];
NSDate *newDate = [NSDate dateWithTimeInterval:(NSTimeInterval)progressValue sinceDate: currentDate];
timerObject.fireDate = newDate;
...