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()

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

时间: 2024-10-04 04:08:59

DKNightVersion的基本使用(夜间模式)的相关文章

DKNightVersion 的实现 --- 如何为 iOS 应用添加夜间模式

在很多重阅读或者需要在夜间观看的软件其实都会把夜间模式当做一个 App 所需要具备的特性. 而如何在不改变原有的架构, 甚至不改变原有的代码的基础上, 就能为应用优雅地添加夜间模式就成为一个在很多应用开发的过程中不得不面对的一个问题. 就是以上事情的驱动, 使我思考如何才能使用一种优雅并且简洁的方法解决这一问题. 而 DKNightVersion 就是我带来的解决方案. 到目前为止, 这个框架的大部分的工作都已经完成了, 或许它现在不够完善, 不过我会持续地维护这个框架, 帮助饱受实现夜间模式之

iOS - 夜间模式KTJNightVersion

KTJNightVersion:快速部署夜间模式. 当使用DKNightVersion进行部署夜间模式时候发现了一些问题,由于项目比较急,于是按照DKNightVersion的思路重新进行了实现,并加强了部分功能.先已完成测试,由于开发与测试较急,所以存在一些隐蔽的BUG也是在所难免,烦请各位指正.(github.博客园) KTJNightVersion整体设计: 1.模式切换使用通知方式进行广播,监听该广播的为每一个ViewController,该ViewController分别在 viewW

ReactJS React+Redux+Router+antDesign通用高效率开发模板,夜间模式为例

工作比较忙,一直没有时间总结下最近学习的一些东西,为了方便前端开发,我使用React+Redux+Router+antDesign总结了一个通用的模板,这个技术栈在前端开发者中是非常常见的. 总的来说,我这个工程十分便捷,对于初学者来说,可能包含到以下的一些知识点: 一.React-Router的使用 Router是为了方便管理组件的路径,它使用比较简单,一般定义如下就行,需要注意的是,react-router的版本有1.0-3.0,各个版本对应的API大致相似,但也有不同,我使用的是2.X的,

夜间模式的实现

前天在做项目的时候, 遇到一个问题(夜间模式的实现),通常我们在设置夜间模式的时候,简单的做法是使用通知的设计模式,改变各个页面的背景色,然后设置一下透明的效果,可是一个真正的项目,并不能马虎,需要页面效果美观精致.本文参考了github上一个老外写的实现方案,方案参考 经过自己的理解整合,制作出了自己的页面模式的实现. Xcode中floder 与 group 的区别 在这里我先要说明一下:在Xcode中蓝色和黄色文件夹的区别,因为本文就是使用到了蓝色的文件夹,通常蓝色文件夹在IOS中被称为f

WPF窗口阴影和夜间模式的实现

窗口阴影 实现 因项目需要给用户一定提示,设计师建议在鼠标进入时显示窗口阴影,离开时取消窗口阴影. 很自然,都会想到直接在窗口的内容或者自定义窗口的最外层元素上加效果.示例如下: <Grid> <Grid.Effect> <DropShadowEffect x:Name="ShadowEffect" BlurRadius="15" Direction="270" Opacity="0" Shado

Android 夜间模式的实现

package com.loaderman.daynightdemo; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatDelegate; import android.support.v7.widget.Toolbar; import android.view.View; public class MainActiv

Android应用开发中的夜间模式实现(一)

前言 在应用开发中会经常遇到要求实现夜间模式或者主题切换具体例子如下,我会先讲解第一种方法. 夜间模式 知乎 网易新闻 沪江开心词场 Pocket 主题切换 腾讯QQ 新浪微博 我今天主要是详述第一种的实现方式: 首先,应用的Application要继承自定义的Theme 1 2 3 4 5 6 <application android:allowBackup="true" android:icon="@drawable/ic_launcher" androi

【android】夜间模式简单实现

关于阅读类的app,有个夜间模式真是太重要了. 那么有两种方式可以实现夜间模式 1:修改theme,重启activity 优点:正儿八经的夜间模式,配色看着舒服 缺点:图片刺眼.闪屏 2:使用一个带黑色带透明度的View,盖在现有的activity上,效果类似你带上墨镜,看着太阳不刺眼. 优点:不用重启activity,不闪屏:加上透明度过渡动画,模式之间切换非常舒服,解决了1中,白底图片依旧刺眼的问题.: 缺点:配色没变化,就算带上墨镜,白天依旧是白天. 因此,本方案整合了两种解决方案.在夜间

简单的日间模式夜间模式

package com.example.topnews.topnews; import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.graphics.PixelFormat;import android.os.Bundle;import android.support.v4.app.FragmentActivity;import android.v