使用NSTimer可以显示每秒的时间码帧

| 我正在使用需要显示运行时间码时钟的iPhone / iPad应用程序。使用此代码,我可以正确显示小时,分钟和秒:
    - (void) viewDidLoad {
        // Start the Timer method for here to start it when the view loads.
            runTimer = [NSTimer scheduledTimerWithTimeInterval: .01 target: self selector: @selector(updateDisplay) userInfo: nil repeats: YES];
    }

- (void)updateDisplay {
        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
        NSDate *date = [NSDate date];

        // Display each hour, minute, second and frame.
        [formatter setDateFormat:@\"hh\"];
        [timecodeHourLabel setText:[formatter stringFromDate:date]];

        [formatter setDateFormat:@\"mm\"];
        [timecodeMinuteLabel setText:[formatter stringFromDate:date]];

        [formatter setDateFormat:@\"ss\"];
        [timecodeSecondLabel setText:[formatter stringFromDate:date]];
}
问题是当我需要每秒显示帧数时。我知道计算
1/24 * 1000
可以得出一帧有多少毫秒。我只是不知道如何使
NSDate
NSTimer
函数与此代码配合使用,并不允许它根据运行时间码的需要尽快更新
UILabel
。 有什么建议么?     
已邀请:
        如果您的计时器以0.01秒的时间运行,那么它的频率为100帧/秒(嗯,最好说它每秒有100个函数调用)。但是,如果您需要显示精确的时间段(因为有时可能会延迟计时器),则需要存储上一个通话日期,然后使用
NSDate* new_date = [NSDate date];
double freq = 1.0 / [new_date timeIntervalSinceDate: old_date];
[old_date release];
old_date = [new_date retain];
    
        这是处理/ Java等效项,可以很方便地重新利用。
String timecodeString(int fps) {
  float ms = millis();
  return String.format(\"%02d:%02d:%02d+%02d\", floor(ms/1000/60/60),    // H
                                              floor((ms/1000/60)%60),       // M (edit: added %60)
                                              floor(ms/1000%60),       // S
                                              floor(ms/1000*fps%fps)); // F
}
    

要回复问题请先登录注册