Прикинь но в формате 00:00:00 - PullRequest
       6

Прикинь но в формате 00:00:00

0 голосов
/ 21 сентября 2011

Когда нажата IBAction, я хочу счетчик, который считает.

Но в этой форме

00: 00: 00 Часы: минуты: секунды

Этоэто код на данный момент:

-(void)countUp {

    mainInt += 1;
    seconds.text = [NSString stringWithFormat:@"%02d", mainInt];

}

Это считается только в формате 00

Спасибо за помощь!

1 Ответ

2 голосов
/ 21 сентября 2011

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

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...