打开/关闭声音 (IOS)
On / off sound (IOS)
我将此代码用于按下时发出按下声音的按钮。
是否可以这样做,当您关闭 "Switch" -(在第二个 VC 上)时,第一个 VC 上的按钮的声音会打开关闭?
@IBAction func SoundButton(_ sender: UIButton) {
let filename = "button-16"
let ext = "mp3"
if let soundUrl = Bundle.main.url(forResource: filename, withExtension: ext) {
var soundId: SystemSoundID = 0
AudioServicesCreateSystemSoundID(soundUrl as CFURL, &soundId)
AudioServicesAddSystemSoundCompletion(soundId, nil, nil, { (soundId, clientData) -> Void in
AudioServicesDisposeSystemSoundID(soundId)
}, nil)
AudioServicesPlaySystemSound(soundId)
}
}
您可以将声音值存储在布尔值中,并在开关更改后将其保存在 UserDefaults
中。您应该检索此布尔值并在 cellForRowAt
.
中相应地设置开关的状态
GlobalVariables.swift
var isSoundOn: String {
get {
return UserDefaults.standard.bool(forKey: "isSoundOn")
}
set {
UserDefaults.standard.setBool(newValue, forKey: "isSoundOn")
UserDefaults.standard.synchronize()
}
}
CalculatorViewController.swift
@IBAction func soundButtonPressed(_ sender: UIButton) {
guard isSoundOn else {
return
}
let filename = "button-16"
let ext = "mp3"
[...]
}
SettingsViewController.swift
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let settingCell = tableView.dequeueReusableCell(withIdentifier: "settingCell", for: indexPath) as! SettingCell
settingCell.switch.isOn = isSoundOn
return settingCell
}
SettingCell.swift
class SettingCell: UITableViewCell {
@IBOutlet weak var switch: UISwitch!
@IBAction func switchValueChanged() {
isSoundOn = switch.isOn
}
}
我将此代码用于按下时发出按下声音的按钮。
是否可以这样做,当您关闭 "Switch" -(在第二个 VC 上)时,第一个 VC 上的按钮的声音会打开关闭?
@IBAction func SoundButton(_ sender: UIButton) {
let filename = "button-16"
let ext = "mp3"
if let soundUrl = Bundle.main.url(forResource: filename, withExtension: ext) {
var soundId: SystemSoundID = 0
AudioServicesCreateSystemSoundID(soundUrl as CFURL, &soundId)
AudioServicesAddSystemSoundCompletion(soundId, nil, nil, { (soundId, clientData) -> Void in
AudioServicesDisposeSystemSoundID(soundId)
}, nil)
AudioServicesPlaySystemSound(soundId)
}
}
您可以将声音值存储在布尔值中,并在开关更改后将其保存在 UserDefaults
中。您应该检索此布尔值并在 cellForRowAt
.
GlobalVariables.swift
var isSoundOn: String {
get {
return UserDefaults.standard.bool(forKey: "isSoundOn")
}
set {
UserDefaults.standard.setBool(newValue, forKey: "isSoundOn")
UserDefaults.standard.synchronize()
}
}
CalculatorViewController.swift
@IBAction func soundButtonPressed(_ sender: UIButton) {
guard isSoundOn else {
return
}
let filename = "button-16"
let ext = "mp3"
[...]
}
SettingsViewController.swift
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let settingCell = tableView.dequeueReusableCell(withIdentifier: "settingCell", for: indexPath) as! SettingCell
settingCell.switch.isOn = isSoundOn
return settingCell
}
SettingCell.swift
class SettingCell: UITableViewCell {
@IBOutlet weak var switch: UISwitch!
@IBAction func switchValueChanged() {
isSoundOn = switch.isOn
}
}