Ios 滑块擦洗不太平滑

Ios 滑块擦洗不太平滑,ios,swift,timer,avplayer,uislider,Ios,Swift,Timer,Avplayer,Uislider,我正试图实现一个滑块的AVPlayer显示长度的音频文件,并允许用户擦洗前进和后退 我已经有了它的工作相当多,但当你移动滑块旋钮,它恢复到原来的位置一秒钟,然后跳过向前,你移动到哪里,开始播放 有没有办法阻止这种轻弹?我可能在做一些愚蠢的代码 这是我的滑块块: @IBAction func horizontalSliderActioned(_ sender: Any) { audioPlayer?.pause() //self.timer?.invalidate()

我正试图实现一个滑块的AVPlayer显示长度的音频文件,并允许用户擦洗前进和后退

我已经有了它的工作相当多,但当你移动滑块旋钮,它恢复到原来的位置一秒钟,然后跳过向前,你移动到哪里,开始播放

有没有办法阻止这种轻弹?我可能在做一些愚蠢的代码

这是我的滑块块:

@IBAction func horizontalSliderActioned(_ sender: Any) {

    audioPlayer?.pause()
        //self.timer?.invalidate()

    //create a CMTime the slider value
    let seconds : Int64 = Int64(horizontalSlider.value)
        let preferredTimeScale : Int32 = 1
            let seekTime : CMTime = CMTimeMake(seconds, preferredTimeScale)
                audioPlayerItem?.seek(to: seekTime)

    audioPlayer?.play()
        //self.timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(PlayerViewController.audioSliderUpdate), userInfo: nil, repeats: true)
}
我使用了一个计时器,所以我玩了失效,然后重新创建,但它没有做任何事情

这是计时器块:

func audioSliderUpdate() {

    let currentTime : CMTime = (self.audioPlayerItem?.currentTime())!
    let seconds : Float64 = CMTimeGetSeconds(currentTime)
    let time : Float = Float(seconds)

    self.horizontalSlider.value = time


}
由计时器调用,此时音频开始播放:

self.timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(PlayerViewController.audioSliderUpdate), userInfo: nil, repeats: true)
从播放音频的持续时间开始设置最长时间:

  let duration : CMTime = (self.audioPlayer?.currentItem!.asset.duration)!
  let seconds : Float64 = CMTimeGetSeconds(duration)
  let maxTime : Float = Float(seconds)

  self.horizontalSlider.maximumValue = maxTime

我认为滑块的范围没有设置为通过为其分配
时间
可以实现的范围

默认设置如下所示:


您需要将它们设置为播放声音的0…长度,或者输入相对单位0…1的时间,如果您还没有设置的话。

我正在设置播放音频的最大时间,我会将此添加到问题中