首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Swift的app中实现DarkMode

如何在Swift的app中实现DarkMode
EN

Stack Overflow用户
提问于 2020-07-14 13:10:20
回答 2查看 85关注 0票数 1

抱歉,如果这个问题被问到了,但是在stackOverFlow上找不到正确的答案,所以我问了..

我试图在我的应用程序中实现暗模式,但不幸的是,它在使用表视图时不能很好地工作,它确实改变了我的背景和东西,但我不能在我的表视图中改变我的组的颜色。

这里有一张图片来说明这个问题:https://imgur.com/a/h4A3zOZ (因为太大了,不能上传到这里)。

下面是我的代码:

代码语言:javascript
复制
// 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
                
        }
    }
EN

回答 2

Stack Overflow用户

发布于 2020-07-14 13:49:14

另一种(也许更简单)实现暗模式的方法是使用iOS暗模式功能,你可以在settings.If中触发该功能,你想实现这个功能,你可以通过转到你的Assets.xcassets并按下底部->新颜色集上的加号标记来创建自定义颜色集。在属性检查器上,在名称下命名你的颜色,在外观下选择‘任何,亮,暗’,现在你将有一个位置来放置3种不同的颜色。在“光”下,放入亮模式颜色,在“暗”模式下,放入“暗”模式颜色。

然后,在您希望实现此颜色的地方,您可以在故事板中将颜色更改为您的自定义颜色,如下所示:

或者您可以在代码中更改它,如下所示

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

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

然而,这种方法意味着你将不会有一个独立的暗模式,因为它只会在设备本身启用暗模式时被触发。

票数 0
EN

Stack Overflow用户

发布于 2020-07-14 17:26:12

您应该更改窗口级别上的模式以将更改应用于所有控件,例如:

代码语言:javascript
复制
if #available(iOS 13, *) {
   UIApplication.shared.delegate?.window??.overrideUserInterfaceStyle = .dark
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62888450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档