DKNightVersion的基本使用(夜间模式)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DKNightVersion的基本使用(夜间模式)相关的知识,希望对你有一定的参考价值。

DKNightVersion下载地址: https://github.com/Draveness/DKNightVersion

基本原理就是利用一个单例对象来存储颜色, 然后通过runtime中的objc_setAssociatedObject和objc_getAssociatedObject来完成两个对象间传递要保存的颜色(纯属个人看法)

下面是gif效果图:

技术分享

下面是代码部分:

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var changeButton: UIButton!
    
    @IBOutlet weak var testSwitch: UISwitch!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.title = "夜间模式"
        // 导航栏背景
        self.navigationController?.navigationBar.dk_barTintColorPicker = DKColorWithRGB(0xffffff, 0x343434)
        // 导航栏上的item和返回等颜色
        self.navigationController?.navigationBar.dk_tintColorPicker = DKColorWithColors(UIColor.redColor(), UIColor.whiteColor())
        // view的背景颜色
        self.view.dk_backgroundColorPicker = DKColorWithRGB(0xffffff, 0x343434)
        // 按钮title颜色
        self.changeButton.dk_setTitleColorPicker(DKColorWithColors(UIColor.redColor(), UIColor.whiteColor()), forState: .Normal)
        // 开关颜色
        self.testSwitch.dk_onTintColorPicker = DKColorWithColors(UIColor.greenColor(), UIColor.redColor())
    }

    @IBAction func change(sender: AnyObject) {
        
        // 判断当前是否为夜间模式
        if DKNightVersionManager.currentThemeVersion() == DKThemeVersion.Night {
            // 切换为白天模式
            DKNightVersionManager.dawnComing()
        } else {
            // 切换为夜间模式
            DKNightVersionManager.nightFalling()
        }
    }

}

在项目中, 可以对以下控件设置两种颜色, 分别为白天模式和夜间模式

当设置完成, 调用以下代码即可切换为白天模式

// 切换为白天模式
DKNightVersionManager.dawnComing()

或者调用一下代码切换为夜间模式

// 切换为夜间模式
DKNightVersionManager.nightFalling()

使用还是挺简单的(不过需要对每个控件进行设置, 对比较庞大的项目来说, 还是很蛋疼的)...

以上是关于DKNightVersion的基本使用(夜间模式)的主要内容,如果未能解决你的问题,请参考以下文章

使用JavaScript / jQuery为网站创夜间/高亮模式

使用JavaScript / jQuery为网站创夜间/高亮模式

四种爪机夜间模式的实现思路

在 Swift 的 AVFoundation 中使用夜间模式

系统Android 10.0来袭:新增夜间模式,最大赢家是OLED手机用户?

常见的夜间经济项目有哪些?