Swift:如何在更改视图时停止背景音乐

问题描述:

我试图在更改为另一个视图时让背景音乐停止播放。Swift:如何在更改视图时停止背景音乐

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

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") 
     } 
    } 
} 

然后我音乐加载到视图这里

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() 
    } 
+0

添加MusicHelper.sharedHelper.stopBackgroundMusic()到viewWillDisappear()例如有什么问题? – Gruntcakes

只要写下面的代码停止时提供的视图更改玩家正如你所提到的,audioPlayer是一个全局变量。

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

这就是我刚才试了,得到了覆盖只能在类成员中指定一种方式 – sheeno12

+0

//装载背景音乐 MusicHelper.sharedHelper.playBackgroundMusic(){ 覆盖FUNC viewWillDisappear(){ audioPlayer!.stop() } – sheeno12