我正在使用一个应用程序,该应用程序可以处理设备运动事件并以 5 秒的增量更新界面。我想向应用程序添加一个指示器,以显示应用程序运行的总时间。看起来像秒表的计数器(例如本机 iOS 时钟应用程序)是计算应用程序运行时间并将其显示给用户的合理方法。
我不确定这种秒表的技术实现。这就是我的想法:
如果我知道界面更新之间的时间间隔,我可以添加事件之间的秒数并将秒数保留为局部变量。或者,0.5 秒间隔的预定定时器也可以提供计数。
如果我知道应用程序的开始日期,我可以使用以下命令将局部变量转换为每个界面更新的日期[[NSDate dateWithTimeInterval:(NSTimeInterval) sinceDate:(NSDate *)]
我可以使用具有短时间样式的 NSDateFormatter 将更新日期转换为字符串stringFromDate
method
可以将生成的字符串分配给界面中的标签。
结果是秒表会针对应用程序的每个“滴答声”进行更新。
在我看来,这个实现有点太重了,而且不像秒表应用程序那么流畅。是否有更好、更具交互性的方式来计算应用程序的运行时间?也许 iOS 已经为此目的提供了一些东西?
如果你看进去Apple 的 iAd 示例代码 https://developer.apple.com/library/ios/samplecode/iAdSuite_Storyboard/Listings/ContainerBanner_ContainerBanner_TextViewController_m.html在基本的横幅项目中,他们有一个简单的计时器:
NSTimer *_timer;
_timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(timerTick:) userInfo:nil repeats:YES];
以及他们拥有的方法
- (void)timerTick:(NSTimer *)timer
{
// Timers are not guaranteed to tick at the nominal rate specified, so this isn't technically accurate.
// However, this is just an example to demonstrate how to stop some ongoing activity, so we can live with that inaccuracy.
_ticks += 0.1;
double seconds = fmod(_ticks, 60.0);
double minutes = fmod(trunc(_ticks / 60.0), 60.0);
double hours = trunc(_ticks / 3600.0);
self.timerLabel.text = [NSString stringWithFormat:@"%02.0f:%02.0f:%04.1f", hours, minutes, seconds];
}
它只是从启动开始运行,非常基本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)