gpt4 book ai didi

ios - 使用 AVAudioPlayer 使 UISlider 随进度更新

转载 作者:搜寻专家 更新时间:2023-11-01 06:30:26 26 4
gpt4 key购买 nike

我正在制作一个简单的音频播放器应用,它允许用户使用 UISlider 更改他们在轨道中的位置。

它不做什么: slider 不会根据轨道的进度进行更新。我找到了一个 similar question here ,第二个答案是对 AVAudioPlayer 的响应——建议使用 currentTime 更新 slider 。我想尝试这样做。

这是我的代码:

import UIKit
import AVFoundation

class MusicViewController: UIViewController {

....

@IBOutlet var Slider: UISlider!

@IBAction func changeAudioTime(_ sender: Any) {
Slider.maximumValue = Float(audioPlayer.duration)
audioPlayer.stop()
audioPlayer.currentTime = TimeInterval(Slider.value)
audioPlayer.prepareToPlay()
audioPlayer.play()
}

func updateSlider(){

Slider.value = Float(audioPlayer.currentTime)
print("Changing works")
}

第一个功能运行良好——用户可以改变他们所在的位置。但是,对我来说,第二个函数应该根据 AudioPlayer 的 currentTime 更改 Slider.value。它不会那样做。

它也没有打印,所以我相信它没有发射。

我是 Swift 的新手,所以我可能遗漏了一些东西。有任何想法吗?

最佳答案

测试代码:-

添加定时器变量

var timer: Timer?

在您开始播放音频的函数中:

    slidderrr.value = 0.0
slidderrr.maximumValue = Float((player?.duration)!)
audioPlayer.play()
timer = Timer.scheduledTimer(timeInterval: 0.0001, target: self, selector: #selector(self.updateSlider), userInfo: nil, repeats: true)

不要忘记在不想更新 slider 时使计时器失效

func stopPlayer() {
player?.stop()
timer?.invalidate()
print("Player and timer stopped")
}

关于ios - 使用 AVAudioPlayer 使 UISlider 随进度更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48182101/

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