1
我有兩個UIViewControllers,每個都有一個UISlider
。一個滑塊跟蹤從AVPlayer
播放的音頻文件的進度,另一個viewcontroller滑塊跟蹤從AVAudioPlayer
播放的音頻文件的進度。響應AVPlayer
動畫的滑塊非常平滑,而滑塊響應AVAudioPlayer
的動畫不平滑。該滑塊設置完全相同,除了我如何獲得每個玩家的當前時間相同,如下圖所示:UISlider進展不順利
//AVPlayer slider
func trackAudio() {
let currentTime = self.newPlayer!.currentTime()
let currentTimeInSeconds = CMTimeGetSeconds(currentTime)
slider.setValue(Float(currentTimeInSeconds), animated: true)
}
//AVAudioPlayer Slider
func trackAudio() {
let currentTime = self.player!.currentTime
slider.setValue(Float(currentTime), animated: true)
}
func playPressed(){
player!.play()
updater = CADisplayLink(target: self, selector: #selector(RecordController.trackAudio))
updater.add(to: RunLoop.current, forMode: RunLoopMode.commonModes)
}
你是如何觸發你的兩個trackAudio方法是什麼?隨着定時器?如果是這樣,他們是否設置了相同的時間間隔? –
@DuncanC我使用'CADisplayLink'。用代碼更新答案。 – Brosef
只是想通了。所以這個視圖控制器有兩個目的:記錄和播放。錄製先於播放,並涉及使用「CADisplayLink」的動畫。一旦錄製停止並播放錄音,我再次使用'CADisplayLink'來更新滑塊。我從錄製動畫中移除了CADisplayLink,滑塊完美地工作。現在我必須弄清楚如何讓他們一起工作。 – Brosef