swift - 如何在 Swift 中将 DarkMode 实现到应用程序中
问题描述
抱歉,如果有人问了这个问题,但在 stackOverFlow 中找不到正确的答案,所以我问..
我正在尝试在我的应用程序中实现暗模式,但不幸的是,它在使用 tableviews 时对我来说效果不佳,它确实改变了我的背景和东西,但我无法在我的 tableview 中更改我的组的颜色。
这是一张图片来说明问题: https ://imgur.com/a/h4A3zOZ (不能在这里上传,因为它太大了)。
这也是我的代码:
// MARK: - Premium Section - DarkMode + Graph:
@IBAction func darkModeSwitch(_ sender: UISwitch) {
let current = sender.isOn ? Theme.dark : Theme.light
if #available(iOS 13.0, *) {
// overrideUserInterfaceStyle = UIUserInterfaceStyle(rawValue: current.stateMode)!
//STEP1: Saving User Defaults Switcher:
saveSwitchToggleDarkMode(switcherState: sender.isOn)
//STEP2: Setting UI Colors Of Settings View:
self.tableView.backgroundColor = current.backgroundColor
///Setting up the barTint Color:
self.navigationController?.navigationBar.barTintColor = current.barTintColor
///Setting up the title text color:
self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor:current.textColor]
///Changing back color in navigation controller:
self.navigationController?.navigationBar.backItem?.backBarButtonItem?.tintColor = current.backItemColor
}
}
解决方案
实现暗模式的另一种(也许更容易)方法是使用可以在设置中触发的 iOS 暗模式功能。如果要实现此功能,可以通过转到 Assets.xcassets 并按底部的加号 -> 新颜色集。在属性检查器上,在名称下命名您的颜色,在外观下,选择“任何、浅色、深色”,现在您将拥有 3 种不同颜色的位置。在 Light 下,放置浅色模式颜色,在深色下,放置深色模式颜色。
然后在您希望实现此颜色的地方,您可以将颜色更改为情节提要中的自定义颜色,如下所示:-
或者您可以使用类似的代码在代码中更改它
myButton.backgroundColor = UIColor(named: "TestColor")
当用户通过控制中心或设置触发暗模式时,应用程序也会自动进行相应的更改。您可以通过转到设置 -> 开发人员 -> 深色外观或转到功能 -> 切换外观或简单地按 Shift + Command + A 来测试它
但是,这种方法意味着您不会拥有独立的暗模式,因为只有在设备本身启用暗模式时才会触发它。
推荐阅读
- phonegap-plugins - Phonegap 显示错误 - “哦,天哪。你的构建失败了。”
- scala - Scala 在 \n 上拆分
- javascript - “$.get 不是函数”使用来自 babel-node 的 jQuery
- go - Go 自定义错误类型:为什么要返回指向错误的指针?
- javascript - Vanilla JavaScript 向元素添加类
- javascript - 如何设置 cookie 的多个值并将它们全部显示在另一个页面上?
- python - Python RAW 套接字解释数据字节
- c - C 中的堆栈代码在运行后立即崩溃并停止工作
- azure - 来自 kubernetes pod 的 Squid 代理连接
- machine-learning - 为什么 Keras Early Stopping 功能不会停止训练,虽然监测值在增加?