2014年8月30日土曜日

【Objective-C】カウントアップするタイマーの作り方(ミリ秒まで)

タイマー開始前に時間表示用のラベルの初期化、開始時刻の取得をします。
その後、タイマーのインターバルには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 件のコメント:

コメントを投稿