dar*_*ger 3 avaudioplayer ios swift swift3
我正在制作一个简单的音频播放器应用程序,它允许用户使用 UISlider 更改他们在曲目中的位置。
它不做的事情:滑块不会根据曲目的进度进行更新。我在这里发现了一个类似的问题,第二个答案是响应AVAudioPlayer- 建议使用currentTime更新滑块。我想尝试这样做。
这是我的代码:
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")
}
Run Code Online (Sandbox Code Playgroud)
第一个函数工作正常——用户可以改变他们所在的位置。但是,我的第二个功能应该Slider.value根据currentTimeAudioPlayer 的 进行更改。它不这样做。
它也没有打印,所以我相信它没有触发。
我是 Swift 的新手,所以我可能会遗漏一些东西。有任何想法吗?
测试代码:-
添加定时器变量
var timer: Timer?
Run Code Online (Sandbox Code Playgroud)
在您开始播放音频的功能中:
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)
Run Code Online (Sandbox Code Playgroud)
当您不想更新滑块时,不要忘记使计时器无效
func stopPlayer() {
player?.stop()
timer?.invalidate()
print("Player and timer stopped")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3414 次 |
| 最近记录: |