Это код из моего проекта:
-(NSString*)timeLeftString
{
long seconds = [self msLeft]/1000;
if( seconds == 0 )
return @"";
if( seconds < 60 )
return [NSString stringWithFormat:
pluralString(seconds,
NSLocalizedString(@"en|%ld second left|%ld seconds left", @"")), seconds];
long minutes = seconds / 60;
seconds -= minutes*60;
if( minutes < 60 )
return [NSString stringWithFormat:
NSLocalizedString(@"%ld:%02ld left",@""),
minutes, seconds];
long hours = minutes/60;
minutes -= hours*60;
return [NSString stringWithFormat:
NSLocalizedString(@"%ld:%02ld:%02ld left",@""),
hours, minutes, seconds];
}
msLeft
--- моя функция, которая возвращает время в миллисекундах pluralString
--- моя функция, которая обеспечивает различные части строки формата в зависимости отзначение (http://translate.sourceforge.net/wiki/l10n/pluralforms)
Функция возвращает другой формат для разных значений таймера (1 секунда слева, 5 секунд слева, 2:34 слева, 1:15:14 слева).
В любом случае, прогресс плохойдолжна быть видна во время длительной работы
Еще одна мысль: в случае, если оставшееся время «мало» (меньше минуты?), вероятно, оставшееся время не должно отображаться - просто индикатор выполнения слева, чтобы уменьшить интерфейс"визуальный шум".