Как создать таймер обратного отсчета с форматом секунд: миллисекунд? - PullRequest
0 голосов
/ 11 ноября 2010

Я погружаюсь в разработку под iOS и пытаюсь создать таймер обратного отсчета в одном из моих представлений.У меня есть код NSTimer для вызова селектора один раз каждые 0,04 секунды, который обновляет UILabel.У меня проблемы с форматированием текущего времени (начиная с 00:00).Я подумал, что лучший способ сделать это - использовать класс NSDate и связанные с ним классы (NSDateFormatter, NSDateComponents и т. Д.), Но манипуляции с датами и форматами действительно сбивают меня с толку, и код становится громоздкимбыстро.Я надеялся, что есть некоторые пользователи SO, которым удобно использовать класс NSDate, который мог бы помочь мне найти простой способ вычислить текущее время для таймера обратного отсчета и преобразовать его в NString с форматом 'секунды:миллисекунды.

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

1 Ответ

3 голосов
/ 11 ноября 2010

Если вы просто хотите отобразить время, прошедшее с момента запуска таймера, вы можете сохранить дату начала (скажем, переменную startDate) и рассчитать временной интервал, используя текущую дату.Должно работать что-то вроде следующего:

NSTimeInterval passed = [[NSDate date] timeIntervalSinceDate: startDate]; 
double intPart;
double fract = modf(passed, &intPart);
label.text = [NSString stringWithFormat:@"%d:%.2f", (int)intPart, fract];
...