首页 > 解决方案 > 如何在 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
                
        }
    }

标签: swiftuser-interfaceios-darkmode

解决方案


实现暗模式的另一种(也许更容易)方法是使用可以在设置中触发的 iOS 暗模式功能。如果要实现此功能,可以通过转到 Assets.xcassets 并按底部的加号 -> 新颜色集。在属性检查器上,在名称下命名您的颜色,在外观下,选择“任何、浅色、深色”,现在您将拥有 3 种不同颜色的位置。在 Light 下,放置浅色模式颜色,在深色下,放置深色模式颜色。

您的设置必须如下所示

然后在您希望实现此颜色的地方,您可以将颜色更改为情节提要中的自定义颜色,如下所示:-

TestColor-故事板

或者您可以使用类似的代码在代码中更改它

myButton.backgroundColor = UIColor(named: "TestColor")

当用户通过控制中心或设置触发暗模式时,应用程序也会自动进行相应的更改。您可以通过转到设置 -> 开发人员 -> 深色外观或转到功能 -> 切换外观或简单地按 Shift + Command + A 来测试它

但是,这种方法意味着您不会拥有独立的暗模式,因为只有在设备本身启用暗模式时才会触发它。


推荐阅读