我有一个进度视图,表示播放时音轨的播放/进度。 1.0表示该进度视图100%完成当然。我需要完成的是进度视图的进度在音轨的整个过程中逐渐增加 - 需要在音轨完成的同时达到100%的进度(进度= 1.0)。我也有音轨的持续时间值。我很困惑的是数学或如何根据音轨的持续时间逐渐增加进度视图的进度。
注意:我将拥有一系列具有不同持续时间的音轨。此外,我正在使用AVPlayer播放这些音轨。
非常感谢任何帮助。提前谢谢。
答案 0 :(得分:0)
在做了一些挖掘后,我相信以这种方式接近它会起作用:
AVPlayerItem *currentItem = yourAVPlayer.currentItem;
CMTime duration = currentItem.duration; //total time
CMTime currentTime = currentItem.currentTime; //playing time
然后在更新方法中......
progressView.progress = (CGFloat)currentTime / (CGFloat)duration;
有人可以确认这是否有效,因为我现在不在我的工作站。
答案 1 :(得分:0)
更简单的方法是允许设置进度视图的最大值和最小值。例如,在我的应用程序中,我使用UISlider来显示进度。当用户选择要播放的曲目时,我按如下方式设置滑块的最小值和最大值:
_slider.minimumValue = 0;
_slider.maximumValue = itemDuration;
进度值只是玩家的当前时间。
[_slider.value setValue:currentPlayerTime animated:YES];
你没有说你的进度视图是否使用了UISlider,但即使它没有,你也可以使用这种方法。