在不同的 ViewController 中停止 AudioPlayer

S. *_*ite 1 avaudioplayer viewcontroller swift

我有一个在 AVAudioPlayer 中播放的主菜单声音文件。

我想创建一个选项按钮,将我带到另一个视图控制器。当我点击开关时,可以选择“关闭”主菜单声音。如何停止音频播放?

如何在不同的 ViewController 中访问音频播放器?

如果您需要更多信息,请告诉我。谢谢!

Ras*_*n L 7

创建一个 Singleton 类,您可以在其中添加播放器并通过以下方式控制它:

import AVFoundation

class Singleton {
    static let sharedInstance = Singleton()
    private var player: AVAudioPlayer?

    func play() {
        guard let url = Bundle.main.url(forResource: "Sound", withExtension: "mp3") else { return }

        do {
            try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
            try AVAudioSession.sharedInstance().setActive(true)

            player = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileType.mp3.rawValue)

            guard let player = player else { return }

            player.play()

        } catch let error {
            print(error.localizedDescription)
        }
    }

    func stop() {
        player?.stop()
    }
}
Run Code Online (Sandbox Code Playgroud)

每当您想启动声音时,只需调用:

Singleton.sharedInstance.play()
Run Code Online (Sandbox Code Playgroud)

每当您想停止声音时,只需调用:

Singleton.sharedInstance.stop()
Run Code Online (Sandbox Code Playgroud)

这可以从所有控制器调用。