向iOS应用程序添加一个正在运行的计数显示计时器,如Clock秒表?

我正在使用一个以5秒为增量处理设备运动事件和更新界面的应用程序.我想在应用程序中添加一个指示器,显示应用程序运行的总时间.看起来像一个秒表式的计数器,像本地iOS时钟应用程序是一种合理的方式来计算应用程序已经运行的时间,并将其显示给用户.

我不知道的是这种秒表的技术实现.这就是我在想的:

>如果我知道界面更新之间有多长时间,我可以在事件之间加上秒数,并将秒计数作为局部变量.或者,0.5秒间隔调度定时器可以提供计数.
>如果我知道应用程序的开始日期,我可以使用[[NSDate dateWithTimeInterval:(NSTimeInterval)sinceDate:(NSDate *)]将每个接口更新的本地变量转换为日期
>我可以使用具有短时间风格的NSDateFormatter,使用stringFromDate方法将更新的日期转换为字符串
>生成的字符串可以分配给接口中的标签.
>结果是针对应用程序的每个“tick”更新秒表.

在我看来,这个实现有点太重了,并不像秒表应用程序那么流畅.是否有更好的,更互动的方式来计算应用程序运行的时间?也许iOS已经提供了一些这样的东西?

解决方法

几乎什么@terry路易斯建议,但一个算法调整:

1)安排定时器

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerTick:) userInfo:nil repeats:YES];

2)当定时器触发时,获取当前时间(这是调整,不要计数ticks,因为如果定时器中有摆动,tick计数将累积错误),然后更新UI.此外,NSDateFormatter是一种更简单和更通用的格式来显示时间的方法.

- (void)timerTick:(NSTimer *)timer {
    NSDate *now = [NSDate date];

    static NSDateFormatter *dateFormatter;
    if (!dateFormatter) {
        dateFormatter = [[NSDateFormatter alloc] init];
        dateFormatter.dateFormat = @"h:mm:ss a";  // very simple format  "8:47:22 AM"
    }
    self.myTimerLabel.text = [dateFormatter stringFromDate:now];
}

以上是来客网为你收集整理的向iOS应用程序添加一个正在运行的计数显示计时器,如Clock秒表?全部内容,希望文章能够帮你解决向iOS应用程序添加一个正在运行的计数显示计时器,如Clock秒表?所遇到的程序开发问题。

如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。