我正在制作的音频播放器上有两个标签。一个是经过的时间,一个是歌曲的持续时间,就像在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];
有什么想法吗?
感谢。
答案 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))]];
}