返回第一个ViewController时,如何阻止AVFoundation音频重启?

时间:2018-01-18 06:49:42

标签: ios swift audio avfoundation avaudioplayer

使用AVFoundation,我正在尝试使用用户可以打开或关闭的背景音乐。它设置为在应用程序的第一个屏幕出现时自动播放音乐。当切换到另一个ViewController(例如“设置”)时,音乐会继续播放,这很好。但是,当我单击后退按钮返回主屏幕时,音乐将重新开始。我搜索了相关的问题;然而,它似乎对我没用,或者它们有点不同。我想要它做的是,如果音乐已经播放,它将继续播放而不是重启。

这是我到目前为止所得到的:

import UIKit
import AVFoundation

var g_musicEffect: AVAudioPlayer = AVAudioPlayer()

class ViewController: UIViewController
{
    //MARK: Actions
    @IBAction func playButton(_ sender: UIButton)
    {
        performSegue(withIdentifier: "seguePlay", sender: self)
    }
    @IBAction func settingsButton(_ sender: UIButton)
    {
        performSegue(withIdentifier: "segueSettings", sender: self)
    }


    override func viewDidLoad()
    {
        super.viewDidLoad()
        let musicFile = Bundle.main.path(forResource: "electronic", ofType: ".mp3")

        do
        {
            try g_musicEffect = AVAudioPlayer(contentsOf: URL (fileURLWithPath: musicFile!))
        }
        catch
        {
            print(error)
        }
            g_musicEffect.play()
            g_musicEffect.numberOfLoops = -1
}

1 个答案:

答案 0 :(得分:0)

您是否在回到第一个视图控制器时使用unwind segue?即按下后退按钮使用正常的segue时,视图将再次加载,这就是您的实际问题。使用unwind segue。