-1
一旦IBAction被按下,我想要一个计数器。计数但00:00:00格式
但以这种形式
00:00:00 小时:分钟:秒
这是迄今为止代码:
-(void)countUp {
mainInt += 1;
seconds.text = [NSString stringWithFormat:@"%02d", mainInt];
}
这仅在00格式计数
感谢您的帮助!
一旦IBAction被按下,我想要一个计数器。计数但00:00:00格式
但以这种形式
00:00:00 小时:分钟:秒
这是迄今为止代码:
-(void)countUp {
mainInt += 1;
seconds.text = [NSString stringWithFormat:@"%02d", mainInt];
}
这仅在00格式计数
感谢您的帮助!
只是做了相应的数学到了打破数成其组成部分:
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;