【问题标题】:Play a sound file on repeat in Swift?在 Swift 中重复播放声音文件?
【发布时间】:2019-11-25 11:53:54
【问题描述】:
我已经通过使用以下代码按下按钮成功播放声音。但是,我想按下一个按钮,让声音循环/无限播放。这是如何实现的?我也想实现暂停/播放功能。提前致谢。
@IBAction func keyPressed(_ sender: UIB`utton) {
playSound(soundName: sender.currentTitle!)
}
func playSound(soundName: String) { //
let url = Bundle.main.url(forResource: soundName, withExtension: "wav")
player = try! AVAudioPlayer(contentsOf: url!)
player.play()
} // End of Play Sound
【问题讨论】:
标签:
ios
swift
xcode
audio
【解决方案1】:
默认情况下AVAudioPlayer会从头到尾播放它的音频然后停止,但是我们可以通过设置它的numberOfLoops属性来控制让它循环的次数。例如,要让你的音频总共播放 3 次,你可以这样写:
player.numberOfLoops = 3
如果你想要无限循环然后使用
player.numberOfLoops = -1
例如
func playSound(soundName: String) { //
let url = Bundle.main.url(forResource: soundName, withExtension: "wav")
player = try! AVAudioPlayer(contentsOf: url!)
player.numberOfLoops = -1 // set your count here
player.play()
} // End of Play Sound
【解决方案2】:
你可以留住玩家。然后在播放器的完成委托回调中,再次开始播放。或者随时停止播放器,因为您保留了对它的引用。
【解决方案3】:
var audioPlayer: AVAudioPlayer?
func startBackgroundMusic() {
if let bundle = Bundle.main.path(forResource: "Guru_Nanak_Sahib_Ji", ofType: "mp3") {
let backgroundMusic = NSURL(fileURLWithPath: bundle)
do {
audioPlayer = try AVAudioPlayer(contentsOf:backgroundMusic as URL)
guard let audioPlayer = audioPlayer else { return }
audioPlayer.numberOfLoops = -1 // for infinite times
audioPlayer.prepareToPlay()
audioPlayer.play()
} catch {
print(error)
}
}
}