gpt4 book ai didi

ios - slider 擦洗不太顺畅

转载 作者:行者123 更新时间:2023-11-30 12:44:59 26 4
gpt4 key购买 nike

我正在尝试为 AVPlayer 实现一个 slider 来显示音频文件的长度并允许用户向前和向后拖动。

我已经让它工作得很好,但是当您移动 slider 旋钮时,它会恢复到原始位置一秒钟,然后向前跳到您移动到的位置并再次开始播放。

有办法阻止这种闪烁吗?我可能对代码做了一些愚蠢的事情。

这是我的 slider block :

@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)
}

我正在使用计时器,因此我正在尝试使其无效,然后重新创建,但它没有执行任何操作。

这是计时器 block :

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

最佳答案

我认为您的 slider 范围未设置为通过为其分配时间可以实现的范围。

默认设置如下:enter image description here

您需要将它们设置为 0...播放声音的长度,或者以相对单位 0...1 输入时间(如果您还没有这样做)。

关于ios - slider 擦洗不太顺畅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41754275/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com