我正在尝试为我的应用添加一个主题(深色主题)。因此,当用户点击活动开关时,整个应用程序将进入暗模式。我已经硬编码了暗模式,只是为了看看效果; 现在,我想通过UISwitch启用和禁用它,但我不确定该如何做?
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()
}
然后我所做的就是在每个视图控制器中调用该函数以查看它的外观,但我需要能够访问开关是否打开或关闭的布尔值,如果是,则执行该功能,否则保持不变。如果您有任何进一步的问题,请让我知道,我知道这些可能没有太多意义。
viewDidLoad
在视图实际可见之前被调用。在向用户显示视图之前,将应用暗模式。 - Andy Ibanez