2012-04-04 21 views
0

拆分定時器當計時器正在運行 並且存在時便會低於THT計時器 按鈕時按鈕被點擊當前定時器時間被注意的和定時器繼續 裝置繼續FRM THT點 這個過程重複iphone秒錶一圈分割

如秒錶一圈簡歷

回答

0

我是直線解決方案的倡導者。

#import <mach/mach_time.h> 

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

上的每個 '圈按' 保存當前系統時間

[_stampsArray addObject: [NSNumber numberWithUnsignedLongLong: mach_absolute_time()]; 

和finaly計算單圈時間

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 

顯示結果,你可以

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]; 

顯示實際已用時間,只需計算差異

unsigned long long _elapsed = mach_absolute_time() - [_stampsArray objectAtIndex: 0]; 

並根據需要以任何常規間隔(刷新率)在UI中使用該值。有一個使用NSTimer的好地方:-)