首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iphone秒表搭接

iphone秒表搭接
EN

Stack Overflow用户
提问于 2012-04-04 11:22:25
回答 1查看 456关注 0票数 0

我希望拆分计时器,是指当计时器运行时,在计时器下面会有一个按钮,当单击按钮时,注意到当前的计时器时间,和计时器继续进行frm点,并且这个过程重复。

秒表圈恢复

EN

回答 1

Stack Overflow用户

发布于 2012-04-22 21:46:59

我是直线解决方案的倡导者。

代码语言:javascript
运行
复制
#import <mach/mach_time.h>

...
NSMutableArray *_stampsArray = [[NSMutableArray alloc] initWithCapacity: 10];

在每一个“圈压”上节省当前的系统时间

代码语言:javascript
运行
复制
[_stampsArray addObject: [NSNumber numberWithUnsignedLongLong: mach_absolute_time()];

最后计算搭接时间

代码语言:javascript
运行
复制
unsigned int lap = ... // 1 .. n
static struct mach_timebase_info timebase_info;
if(timebase_info.denom == 0) {
  mach_timebase_info(&timebase_info);
}
unsigned long long _timeStampStart = [_stampsArray objectAtIndex: lap -1];
unsigned long long _timeStampStop  = [_stampsArray objectAtIndex: lap];
unsigned long long _timeInterval = _timeStampStop - _timeStampStart;
_timeInterval *= timebase_info.numer;
_timeInterval /= timebase_info.denom;

_timeInterval /= 1000*1000*10; // resolution will be 1/100 sec. now

要显示结果,您可以

代码语言:javascript
运行
复制
int _decimalSec = _timeInterval % 100;
int _sec = (_timeInterval / 100) % 60;
int _min = (_timeInterval / (100 * 60)) % 60;
int _hour = (_timeInterval / (100 * 60 * 60));// % 24; 
NSString* formatedAsLapTime = [NSString stringWithFormat:@"%d:%02d:%02d.%02d", _hour, _min, _sec,_decimalSec];

要显示实际运行时间,只需计算差额

代码语言:javascript
运行
复制
unsigned long long _elapsed = mach_absolute_time() - [_stampsArray objectAtIndex: 0];

并按需要在任何定期间隔(刷新速率)中使用UI中的值。有一个使用NSTimer的好地方:-)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10010081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档