ios - Swift:如何在更改 View 时停止背景音乐

标签 ios swift avaudioplayer

我试图让背景音乐在切换到另一个 View 时停止播放。

我有一个全局变量来播放音乐

import Foundation
import AVFoundation

class MusicHelper {
    static let sharedHelper = MusicHelper()
    var audioPlayer: AVAudioPlayer?

    func playBackgroundMusic() {
        let aSound = NSURL(fileURLWithPath: Bundle.main.path(forResource: "The Walking Dead", ofType: "mp3")!)
        do {
            audioPlayer = try AVAudioPlayer(contentsOf:aSound as URL)
            audioPlayer!.numberOfLoops = -1
            audioPlayer!.prepareToPlay()
            audioPlayer!.play()
        } catch {
            print("Cannot play the file")
        }
    }
}

然后我将音乐加载到这里的 View 中

import UIKit
import SwiftGifOrigin
import AVFoundation

class ViewController: UIViewController {
    var audioPlayer: AVAudioPlayer?

    @IBOutlet weak var introGif: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Gif intro
        self.introGif.image = UIImage.gifWithName("WalkingDeadIntro")

        _ = try! Data(contentsOf: Bundle.main.url(forResource: "WalkingDeadIntro", withExtension: "gif")!)
        //self.bottomImageView.image = UIImage.gif(data: imageData)

        // Load background Music
        MusicHelper.sharedHelper.playBackgroundMusic()
    }

最佳答案

只要 audioPlayer 是您提到的全局变量,只需编写下面的代码即可在 View 发生变化时停止播放器。

override func viewWillDisappear( ) {
audioPlayer.stop( )
}

关于ios - Swift:如何在更改 View 时停止背景音乐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41005195/

相关文章:

iOS 7 UISegmentedControl 图片不显示

iphone - 无法通过我的 xcode 运行 doxygen 脚本?

objective-c - 在 UISearchBar 中搜索时自动完成

javascript - 如何检查结果是否为 __NSCFNumber?

ios - 使用 realm swift 简单的数据插入

ios - 从 UIAlertView 文本字段获取文本的问题

swift - 如何快速创建 UnsafeMutablePointer<UnsafeMutablePointer>

swift - 使用 AVAudioPCMBuffer 的 AVAudioPlayerNode - 没有音频播放

iphone - 在后台启动 AVQueuePlayer

iphone - iOS 5.0 AVAudioPlayer 加载音频剪辑时出错 : The operation couldn’t be completed.(OSStatus 错误 -50。)