Skip to main content
 首页 » 编程设计

ios之切换按钮静音(快速)

2024年01月01日67shangdawei

我想做的是在我的应用程序中有一个设置页面,当一个开关被点击时(它的原始状态是关闭的)然后它会使整个应用程序静音。到目前为止,我的代码可以做的是仅将当前 View 静音,并且它工作得很好,直到我转到我的主视图,然后音乐仍在播放与之相关的音乐,当我转到设置页面时,静音开关被返回回到原来的关闭状态,音乐再次播放。我想知道如何修复我的代码,以便在打开时消除所有噪音。这是我的代码,感谢您的阅读和帮助:

import UIKit 
import AVFoundation 
 
var songs = "" 
 
var backgroundMusicPlayer: AVAudioPlayer! 
 
func playBackgroundMusic(filename: String) { 
    let url = NSBundle.mainBundle().URLForResource( 
        filename, withExtension: nil) 
    if (url == nil) { 
        println("Could not find file: \(filename)") 
        return 
    } 
 
    var error: NSError? = nil 
    backgroundMusicPlayer = 
        AVAudioPlayer(contentsOfURL: url, error: &error) 
    if backgroundMusicPlayer == nil { 
        println("Could not create audio player: \(error!)") 
        return 
    } 
 
    backgroundMusicPlayer.numberOfLoops = -1 
    backgroundMusicPlayer.prepareToPlay() 
    backgroundMusicPlayer.play() 
} 
 
class settingsView: UIViewController { 
 
@IBOutlet weak var mySwitch: UISwitch! 
 
@IBAction func switchPressed(sender: AnyObject) { 
    playBackgroundMusic(songs) 
 
    if mySwitch.on { 
        backgroundMusicPlayer.pause() 
 
    } else { 
 
        backgroundMusicPlayer.play() 
 
    } 
 
} 
 
override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do view setup here. 
    songs = "settingsBackground.mp3" 
 
    switchPressed(self) 
    } 
 
} 

请您参考如下方法:

你可以这样做:

MainViewController.swift

import UIKit 
 
class ViewController: UIViewController { 
 
override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do view setup here. 
    let status = NSUserDefaults().stringForKey("playerStatus") 
    if status == "Off"{ 
        if (backgroundMusicPlayer?.playing != nil){ 
            backgroundMusicPlayer?.stop() 
        } 
    }else{ 
        songs = "1.mp3" 
        playBackgroundMusic(songs) 
        } 
    } 
} 

settingsView.swift

import UIKit 
 
class settingsView: UIViewController { 
 
@IBOutlet weak var mySwitch: UISwitch! 
 
@IBAction func switchPressed(sender: AnyObject) { 
 
    if mySwitch.on { 
 
        NSUserDefaults().setObject("on", forKey: "playerStatus") 
        playBackgroundMusic(songs) 
 
    } else { 
        NSUserDefaults().setObject("Off", forKey: "playerStatus") 
        backgroundMusicPlayer!.stop() 
 
    } 
} 
 
override func viewDidLoad() { 
    super.viewDidLoad() 
 
    let status = NSUserDefaults().stringForKey("playerStatus") 
    if status == "Off" { 
        mySwitch.setOn(false, animated: false) 
        } 
    } 
} 

这是完整的工作项目:https://github.com/DharmeshKheni/Switch-with-AudioPlayer