如何阻止 AVFoundation 音频在返回到第一个 ViewController 时重新启动



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

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

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
}

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

最新更新