【发布时间】:2016-06-04 20:46:03
【问题描述】:
该应用程序是一个音乐播放器,我需要显示一个trackTimeLabel,它会在歌曲期间更新播放时长。
因此,每秒更新一次标签的播放曲目持续时间。
现在我正在做一个 hack,我只是计算与歌曲无关的秒数,但这不是一个好的解决方案:
- (void)viewWillAppear:(BOOL)animated {
currentItem = [musicPlayer nowPlayingItem];
_titleLabel.text = [self currentItemValue:MPMediaItemPropertyTitle];
NSTimer *timer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(timerDidTick:) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
}
-(void) timerDidTick:(NSTimer*) theTimer{
long currentPlaybackTime = musicPlayer.currentPlaybackTime;
int currentHours = (int)(currentPlaybackTime / 3600);
int currentMinutes = (int)((currentPlaybackTime / 60) - currentHours*60); // Whole minutes
int currentSeconds = (currentPlaybackTime % 60);
_trackTimeLabel.text = [NSString stringWithFormat:@"%i:%02d:%02d", currentHours, currentMinutes, currentSeconds];
}
Apple 有一个 MPMediaItem 类,我可以得到一个 MPMediaItemPropertyPlaybackDuration 用于轨道,但我似乎无法得到任何使用它的东西。
【问题讨论】:
-
您是否想要获得在曲目播放期间剩余或已用时间的实际实时读数?
-
@CraigSmith 没错,对不起,如果我解释得不够好,但你明白了。有什么想法吗?
标签: ios objective-c avaudioplayer mpmediaitem