その後、タイマーのインターバルにはSelectorで指定されているメソッドの呼び出し頻度を設定し、タイマーをリピートさせて開始します。
これにより、onTimerメソッドが0.01秒単位で呼び出しされる。
onTimerにて、開始時刻と現在時刻を比較する。比較結果から分・秒・ミリ秒を求めて、時間表示用のラベルに代入する。
ちなみに、タイマーを停止する場合は、invalidateメソッドを使用します。
■ ヘッダーファイル
NSTimer * _timer;
NSDate * _stTime;
@property (weak, nonatomic) IBOutlet UILabel *lblTime;
▪ ソースファイル
- (void)viewDidLoad
{
self.lblTime.text = @"00:00.000";
_stTime = [NSDate date];
_timer = [NSTimer scheduledTimerWithTimeInterval:(0.01)
target:self selector:@selector(onTimer:)
userInfo:nil repeats:YES];
[_timer fire];
}
- (void)onTimer:(NSTimer*)timer {
NSTimeInterval dateDiff = [[NSDate date] timeIntervalSinceDate:_stTime];
//int hour = dateDiff / (60 * 60);
int minute = fmod((dateDiff / 60) ,60);
int second = fmod(dateDiff ,60);
int miliSec = (dateDiff - floor(dateDiff)) * 1000;
self.lblTime.text = [NSString stringWithFormat:@"%02d:%02d.%03d",minute,second,miliSec];
}
0 件のコメント:
コメントを投稿