Iphone 无法停止背景音乐(Swift 3,Xcode 8)
我在加载视图时运行了一个Iphone 无法停止背景音乐(Swift 3,Xcode 8),iphone,swift,xcode,Iphone,Swift,Xcode,我在加载视图时运行了一个AVAudioPlayer实例。从另一个ViewController我有一个ui开关来停止音乐。我可以从开关接收Bool,并看到它在控制台中调用正确的功能,但我无法让音乐停止播放。我尝试过停止、暂停和更改音量,但都没有效果。当应用程序关闭(双击home并向上滑动)且开关状态保持关闭时,音乐将不会播放。如果打开开关,音乐将播放,但不会停止 代码: *******交换机代码******** let optionDefaults = UserDefaults.standard
AVAudioPlayer
实例。从另一个ViewController
我有一个ui开关来停止音乐。我可以从开关接收Bool
,并看到它在控制台中调用正确的功能,但我无法让音乐停止播放。我尝试过停止、暂停和更改音量,但都没有效果。当应用程序关闭(双击home并向上滑动)且开关状态保持关闭时,音乐将不会播放。如果打开开关,音乐将播放,但不会停止
代码:
*******交换机代码********
let optionDefaults = UserDefaults.standard
@IBOutlet weak var musicOnOff: UISwitch!
var musicOn : Bool = true
@IBAction func switchToGame(sender: UIButton) {
if musicOnOff.isOn{
musicOn = true
optionDefaults.set(musicOn, forKey: "musicOn")
}
if musicOnOff.isOn == false{
musicOn = false
optionDefaults.set(musicOn, forKey: "musicOn")
}}
override func viewDidLoad() {
super.viewDidLoad()
if optionDefaults.value(forKey: "musicOn") != nil {
let musicOn: Bool = optionDefaults.value(forKey: "musicOn") as! Bool
if musicOn == false {
musicOnOff.isOn = false
}
else{
musicOnOff.isOn = true
}
}}
let optionDefaults = UserDefaults.standard
@IBOutlet weak var musicOnOff: UISwitch!
var musicOn : Bool = true
@IBAction func switchToGame(sender: UIButton) {
if musicOnOff.isOn{
musicOn = true
optionDefaults.set(musicOn, forKey: "musicOn")
}else{
musicOn = false
optionDefaults.set(musicOn, forKey: "musicOn")
}
playOrStopMusic()
}
override func viewDidLoad() {
super.viewDidLoad()
playOrStopMusic()
}
您仅在视图加载完成时播放音乐。如果您想在切换开关切换时停止并播放音乐,只需在切换开关操作上调用palyOrStopMusic方法
var player:AVAudioPlayer = AVAudioPlayer()
let optionDefaults = UserDefaults.standard
override func viewDidLoad() {
super.viewDidLoad()
playOrStopMusic()
}
func playOrStopMusic(){
do{
let audioPath = Bundle.main.path(forResource: "backgroundmusic", ofType: "wav")
try player = AVAudioPlayer(contentsOf: NSURL(fileURLWithPath: audioPath!) as URL)
player.volume = 0.2
if optionDefaults.value(forKey: "musicOn") != nil {
let musicOn: Bool = optionDefaults.value(forKey: "musicOn") as! Bool
if musicOn == false {
print("********** Music is off **********")
player.stop()
}
else {
print("********** Music is On **********")
player.play()
}
}
} catch {
print("AVPlayer did not initialize")
}
player.numberOfLoops = -1
}
*******交换机代码********
let optionDefaults = UserDefaults.standard
@IBOutlet weak var musicOnOff: UISwitch!
var musicOn : Bool = true
@IBAction func switchToGame(sender: UIButton) {
if musicOnOff.isOn{
musicOn = true
optionDefaults.set(musicOn, forKey: "musicOn")
}
if musicOnOff.isOn == false{
musicOn = false
optionDefaults.set(musicOn, forKey: "musicOn")
}}
override func viewDidLoad() {
super.viewDidLoad()
if optionDefaults.value(forKey: "musicOn") != nil {
let musicOn: Bool = optionDefaults.value(forKey: "musicOn") as! Bool
if musicOn == false {
musicOnOff.isOn = false
}
else{
musicOnOff.isOn = true
}
}}
let optionDefaults = UserDefaults.standard
@IBOutlet weak var musicOnOff: UISwitch!
var musicOn : Bool = true
@IBAction func switchToGame(sender: UIButton) {
if musicOnOff.isOn{
musicOn = true
optionDefaults.set(musicOn, forKey: "musicOn")
}else{
musicOn = false
optionDefaults.set(musicOn, forKey: "musicOn")
}
playOrStopMusic()
}
override func viewDidLoad() {
super.viewDidLoad()
playOrStopMusic()
}
您可以包括开关切换的代码吗?似乎viewcontroller只在加载一次开关时检查开关的状态,这不允许您暂停音乐。@DaneJordan,编辑了post以添加开关切换代码,但该代码不起作用,现在当我转到选项viewcontroller时,它会再次启动音乐,以便覆盖音乐