gpt4 book ai didi

ios - 我想在 Xcode 上使用 Swift 让我的黑暗模式同时在所有 View Controller 上工作。我该怎么做?

转载 作者:行者123 更新时间:2023-12-01 16:12:46 24 4
gpt4 key购买 nike

这是深色模式的代码。它适用于一个 View Controller ,但我想让它同时适用于所有 View Controller 。我该怎么做?

@IBAction func darkModeAction(_ sender: UISwitch) {
if darkModeSwitch.isOn == true {
view.backgroundColor = UIColor.white
}
else {
view.backgroundColor = UIColor.black
}
}

最佳答案

您可以决定是要通过开关从特定的 ViewController 设置该配置,还是在所有 View Controller 中设置该配置,但重要的部分是您想要跨应用程序状态保存该状态,所以当用户决定他想要深色版本,将其保存在 UserDefaults 中。

然后在您希望此选项为您工作的每个 ViewController 中,您可能需要定义一个 base ViewController,您可以在其中应用此背景颜色(或者从 Xcode11 也可以使用 iOS 13 默认暗模式)取决于 UserDefaults 的值,或者您可以通过 extension UIViewController 来实现,您可以根据您保存的 UserDefaults 键的状态将背景应用于 UIViewController 的任何实例 - 但是,是的,这不是真的很安全。

作为以第一种方式实现它的示例,使用 BaseVC,您可以遵循以下实现,因此在配置 View Controller 中(您有切换器来决定您是否想要黑暗或光明)可能存在类似:

@IBAction func darkModeAction(_ sender: UISwitch) {
UserDefaults.standard.set(darkModeSwitch.isOn, forKey: "prefs_is_dark_mode_on")
}

在你的 BaseViewController 中可能是这样的:

class BaseViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let isDarkOn = UserDefaults.standard.bool(forKey: "prefs_is_dark_mode_on") as? Bool ?? true
if #available(iOS 13.0, *) {
overrideUserInterfaceStyle = isDarkOn ? .dark : .light // this line works only from Xcode11
} else {
view.backgroundColor = isDarkOn ? UIColor.black : UIColor.white
}
}
}

然后在每个 View Controller 中,您可以根据设置状态将背景颜色设置为黑色或白色:

class ViewControllerSample: BaseViewController {
// do other things you want to do in this viewcontroller, the background color will be set automatically through the BaseVC
}

关于ios - 我想在 Xcode 上使用 Swift 让我的黑暗模式同时在所有 View Controller 上工作。我该怎么做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60577630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com