音频播放器持续时间和时间标签的延迟

时间:2014-04-03 13:31:02

标签: ios objective-c cocoa-touch audio nstimer

我正在制作的音频播放器上有两个标签。一个是经过的时间,一个是歌曲的持续时间,就像在iTunes中一样。

然而,当我玩的时候,有一段时间的滞后。在7秒钟的歌曲中,经过的时间显示为“0:00”,持续时间为“-0:07”。然后当我播放这首歌时,标签上的标签为“0:01”和“-0:07”,然后转到“0:01”和“-0:06”

以下是我设置的方法。

-(NSString*)timeFormat:(float)value{

float minutes = lroundf((value)/60);
float seconds = lroundf((value) - (minutes * 60));

int roundedSeconds = (seconds);
int roundedMinutes = (minutes);

NSString *time = [[NSString alloc]
                  initWithFormat:@"%d:%02d",
                  roundedMinutes, roundedSeconds];
return time;

- (void)updateTime:(NSTimer *)timer {


self.timeElapsed.text = [NSString stringWithFormat:@"%@",
                        [self timeFormat:[player currentTime]]];



self.duration.text = [NSString stringWithFormat:@"-%@", [self timeFormat: player.duration - player.currentTime]];

播放按钮会触发此计时器:

self.timer = [NSTimer scheduledTimerWithTimeInterval:0.01
                                                  target:self
                                                selector:@selector(updateTime:)
                                                userInfo:nil
                                               repeats:YES];

有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:2)

如果其他人遇到这个问题,这个答案最终对我有用。它结束了我的当前时间。

-(NSString*)timeFormat:(float)value{

float minutes = floor(lroundf(value)/60);
float seconds = lroundf((value) - (minutes * 60));

int roundedSeconds = lroundf(seconds);
int roundedMinutes = lroundf(minutes);

NSString *time = [[NSString alloc]
                  initWithFormat:@"%d:%02d",
                  roundedMinutes, roundedSeconds];
return time;

- (void)updateTime:(NSTimer *)timer {


self.timeElapsed.text = [NSString stringWithFormat:@"%@",
                        [self timeFormat: ceilf(player.currentTime)]];


self.duration.text = [NSString stringWithFormat:@"-%@", [self timeFormat: (player.duration - ceilf(player.currentTime))]];

}