Я очень близок к завершению моего первого приложения для iPhone, и это было радостью. Я пытаюсь добавить текущий тайм-код с использованием текущего времени через NSTimer, отображающий текущее время (NSDate) на UILabel. NSDate работает нормально для меня, показывая часы, минуты, секунды, миллисекунды. Но вместо миллисекунд мне нужно показывать 24 кадра в секунду.
Проблема в том, что мне нужно, чтобы частота кадров синхронизировалась 100% с часами, минутами и секундами, поэтому я не могу добавить кадры в отдельном таймере. Я попробовал это, и он работал, но таймер кадров не работал синхронно с таймером даты.
Может кто-нибудь помочь мне с этим? Есть ли способ настроить NSDateFormatter, чтобы у меня был таймер даты, отформатированный с 24 кадрами в секунду? Прямо сейчас я ограничен форматированием часов, минут, секунд и миллисекунд.
Вот код, который я сейчас использую
-(void)runTimer {
// This starts the timer which fires the displayCount method every 0.01 seconds
runTimer = [NSTimer scheduledTimerWithTimeInterval: .01
target: self
selector: @selector(displayCount)
userInfo: nil
repeats: YES];
}
//This formats the timer using the current date and sets text on UILabels
- (void)displayCount; {
NSDateFormatter *formatter =
[[[NSDateFormatter alloc] init] autorelease];
NSDate *date = [NSDate date];
// This will produce a time that looks like "12:15:07:75" using 4 separate labels
// I could also have this on just one label but for now they are separated
// This sets the Hour Label and formats it in hours
[formatter setDateFormat:@"HH"];
[timecodeHourLabel setText:[formatter stringFromDate:date]];
// This sets the Minute Label and formats it in minutes
[formatter setDateFormat:@"mm"];
[timecodeMinuteLabel setText:[formatter stringFromDate:date]];
// This sets the Second Label and formats it in seconds
[formatter setDateFormat:@"ss"];
[timecodeSecondLabel setText:[formatter stringFromDate:date]];
//This sets the Frame Label and formats it in milliseconds
//I need this to be 24 frames per second
[formatter setDateFormat:@"SS"];
[timecodeFrameLabel setText:[formatter stringFromDate:date]];
}