Adicionando modo escuro ao aplicativo iOS
Estou tentando adicionar um tema ao meu aplicativo (um tema sombrio). Portanto, quando o usuário clica em uma opção de atividade, o aplicativo inteiro entra no modo escuro. Eu codifiquei o modo escuro apenas para ver como ele seria; no entanto, agora eu gostaria de poder habilitá-lo e desativá-lo através do UISwitch, mas não tenho certeza de como fazer isso?
class DarkModeTableViewCell: UITableViewCell {
var DarkisOn = Bool()
let userDefaults = UserDefaults.standard
@IBOutlet var darkModeSwitchOutlet: UISwitch!
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
@IBAction func darkModeSwitched(_ sender: Any) {
if darkModeSwitchOutlet.isOn == true {
//enable dark mode
DarkisOn = true
userDefaults.set(true, forKey: "DarkDefault")
userDefaults.set(false, forKey: "LightDefault")
} else {
//enable light mode
DarkisOn = false
userDefaults.set(false, forKey: "DarkDefault")
userDefaults.set(true, forKey: "LightDefault")
}
}
}
class DarkModeViewController: UIViewController {
func set(for viewController: UIViewController) {
viewController.view.backgroundColor = UIColor(red: 0.1, green: 0.1, blue: 0.1, alpha: 1.0)
viewController.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
viewController.navigationController?.navigationBar.tintColor = UIColor.white
viewController.navigationController?.navigationBar.barStyle = UIBarStyle.black
viewController.tabBarController?.tabBar.barStyle = UIBarStyle.black
}
static let instance = DarkModeViewController()
}
e então o que eu faço é chamar a função em cada um dos controladores de exibição para ver como ela é, mas eu preciso poder acessar o valor bool se a chave estiver ligada ou desligada e se for o caso. essa função, caso contrário, apenas manter as coisas iguais. Se você tiver mais alguma dúvida, entre em contato. Sei que isso pode não fazer muito sentido.