Когда пользователь нажимает на кнопку, он изменяет пользовательские настройки по умолчанию, чтобы изменить цвет фона, включив темный режим.Но я хочу, чтобы, когда пользователь нажимал на мою кнопку, переходы изменения цвета происходили в реальном времени, как это делает приложение Twitter, без необходимости повторного открытия приложения каждый раз.Есть ли способ, которым я могу это сделать?
Это код кнопки:
@IBAction func changeState(_ sender: UIButton) {
let isDarkMode = UserDefaults.standard.bool(forKey: "isDarkMode")
if isDarkMode == true {
UserDefaults.standard.set(false, forKey: "isDarkMode") // Set the state
}else{
UserDefaults.standard.set(true, forKey: "isDarkMode") // Set the state
}
}
И этот код я использую для обновления цвета пользовательского интерфейса:
override func viewDidLoad() {
super.viewDidLoad()
let isDarkMode = UserDefaults.standard.bool(forKey: "isDarkMode") // Retrieve the state
if isDarkMode == false{
self.navigationController?.navigationBar.isTranslucent = false
self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]//user global variable
self.navigationController?.navigationBar.barStyle = UIBarStyle.default //user global variable
self.navigationController?.navigationBar.tintColor = UIColor.white //user global variable
UIApplication.shared.statusBarStyle = .default
appVersionLabel.textColor = UIColor.black
lightModeLabel.isHidden = true
self.tabBarController?.tabBar.barTintColor = UIColor.black
settingsView.backgroundColor = UIColor.white
darkModeButton.setImage(UIImage(named: "darkModeDisableButton")?.withRenderingMode(.alwaysOriginal), for: .normal)
}else{
UIApplication.shared.statusBarStyle = .lightContent
self.navigationController?.navigationBar.isTranslucent = false
self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]//user global variable
self.navigationController?.navigationBar.barStyle = UIBarStyle.default //user global variable
self.navigationController?.navigationBar.tintColor = UIColor.white //user global variable
UIApplication.shared.statusBarStyle = .lightContent
appVersionLabel.textColor = UIColor.white
darkModeLabel.isHidden = true
self.tabBarController?.tabBar.barTintColor = UIColor.black
settingsView.backgroundColor = UIColor(red: 35/255, green: 35/255, blue: 35/255, alpha: 1)
darkModeButton.setImage(UIImage(named: "darkModeEnableButton")?.withRenderingMode(.alwaysOriginal), for: .normal)
}