Просто сделайте соответствующую математику, чтобы разбить счет на составные части:
NSString *timeString = [NSString stringWithFormat:@"%02d:%02d:%02d",
totalSeconds/3600, // hours
(totalSeconds/60)%60, // minutes
totalSeconds%3600] // seconds
Для удобства чтения было бы неплохо заменить эту встроенную математику макросами или функциями, например:
#define secondsPerMinute 60
#define minutesPerHour 60
int hours(int secs) {
return secs/(minutesPerHour * secondsPerMinute);
}
int minutes(int secs) {
return (secs/secondsPerMinute) % minutesPerHour;
}
int seconds(int secs) {
return secs % (minutesPerHour * secondsPerMinute);
}
// ...
NSString *timeString = [NSString stringWithFormat:@"%02d:%02d:%02d",
hours(totalSeconds),
minutes(totalSeconds),
seconds(totalSeconds)];
Часто при реализации этого вида отображения вы не хотите, чтобы двоеточия прыгали по мере изменения истекшего времени. Многие шрифты имеют цифры фиксированной ширины, поэтому это не всегда проблема, но вы можете использовать три отдельные метки для часов, минут и секунд с неизменными метками между двоеточиями.
Другой подход к приведенной выше математике - хранить секунды, минуты и часы в трех переменных вместо одной, и просто будьте осторожны, увеличивая минуты и сбрасывая секунды, когда секунды достигают 60, и так далее. Чтобы сделать это проще в использовании, заключите его в класс, например:
@interface Time : NSObject {
int seconds;
int minutes;
int hours;
}
- (void)countUp;
- (NSString*)timeString;
@end;