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的基本使用(夜间模式)的更多相关文章
- DKNightVersion 的实现 --- 如何为 iOS 应用添加夜间模式
在很多重阅读或者需要在夜间观看的软件其实都会把夜间模式当做一个 App 所需要具备的特性. 而如何在不改变原有的架构, 甚至不改变原有的代码的基础上, 就能为应用优雅地添加夜间模式就成为一个在很多应用 ...
- 关于app夜间模式那点事
大半年没写过代码了 一直在忙一些其他的事情 这几天想起来看了一点 心惊肉跳的 发现好陌生 所以打算今后慢慢的拾起来 往深度和广度去发展 发现好久之前写的一个微博项目 有一个夜间模式的功能没有 ...
- android夜间模式实现
一.概述 android夜间模式实现分为两大类 重启activity的实现 不重启activity的实现 二.正文 1.重启activity实现夜间模式[在界面文件中的实现部分] 1.1在attrs. ...
- WPF窗口阴影和夜间模式的实现
窗口阴影 实现 因项目需要给用户一定提示,设计师建议在鼠标进入时显示窗口阴影,离开时取消窗口阴影. 很自然,都会想到直接在窗口的内容或者自定义窗口的最外层元素上加效果.示例如下: <Grid&g ...
- WP8版微信5.4发布 新增夜间模式 暂没小视频
经过近一个月的内测,WP8版的微信终于更新了v 5.4版本.新增聊天中的照片墙.识别图片二维码.夜间模式等功能,还对资源占用情况进行了优化,让程序可以更流畅的在低配置设备上运行. 不过,WP8版微信5 ...
- android简单的夜间模式
现在android项目values下打 attrs.xml <?xml version="1.0" encoding="utf-8"?> <r ...
- Android白天/夜间模式Day/Night Mode标准原生SDK实现
Android白天/夜间模式Day/Night Mode标准原生SDK实现 章节A:Android实现白天/夜间模式主要控制器在于UiModeManager,UiModeManager是Andr ...
- Android 之夜间模式(多主题)的实现
引言 夜间模式其实属于多主题切换的一种,不过是最麻烦的一种.因为在夜间模式下不仅要切换主色调,次要色调等等,还要覆盖一些特殊的颜色,因为在夜间模式下总不能什么都是黑的把,那不得丑死-.-,所以当你夜间 ...
- ReactJS React+Redux+Router+antDesign通用高效率开发模板,夜间模式为例
工作比较忙,一直没有时间总结下最近学习的一些东西,为了方便前端开发,我使用React+Redux+Router+antDesign总结了一个通用的模板,这个技术栈在前端开发者中是非常常见的. 总的来说 ...
随机推荐
- combobox只读代码
public partial class Form1: Form { // combobox只读代码 [DllImport("user32.dll", CharSet = Char ...
- 初探react
知道这个框架有一段时间了,可是项目中没有用到,也懒得整理,最近两天比较清闲,又想起了它.好了,废话不多说了,都是干货. react是个什么框架? 为什么用react? react 的原理 react有 ...
- javascript 不用ajax 用 iframe 子域名下做到ajax post数据
最近在一个项目中遇到了ajax跨域的问题,情况如下.有三个域名分别是 a.xx.com b.xx.com c.xx.com 这三个域名都会用用ajax post方式相互读取数据.文笔不好, 不写了妈蛋 ...
- phpstudy虚拟主机配置
<新手篇,开发者直接配置服务器配置文件即可> 很多时候我们从网下或通过其他途径下载源代码到本地Web目录下出现无法访问的案例: 具体的问题是程序路由路径方面做了手脚,把localhost当 ...
- php urlencode()函数URL编码转换实例解析
URLEncode:是对网页url所包含中文字符的一种编码转化方式,URLEncode有两种常见方式,一种是基于GB2312的 Encode(Baidu.Yisou等搜索引擎使用),另一种是基于UTF ...
- python中列表和字典的高级应用
1.将序列分解为单独的变量 1.1问题 包含n个元素的元组或列表.字符串.文件.迭代器.生成器,将它分解为n个变量 1.2方案 直接通过赋值操作 要求:变量个数要等于元素个数 当执行分解操作时,有时需 ...
- Java订单号(时间加流水号)
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...
- 基于 USB 传输的针式打印机驱动程序开发
1.引言 针式打印机曾经在相当长的一段时间占据打印机市场的主导地位,但是近年来由于喷墨.激光等非击打式打印机的冲击,针式打印机的市场份额逐年下降.即便如此,由于针式打印机在票据打印领域的不可取代性,同 ...
- Android圆角矩形的实现
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:Android=&quo ...
- HDU5140---Hun Gui Wei Company (主席树)
主席树太强大了,,如果仅仅用来求第k大就太屈才了..貌似和HDU4605差不多,那个是在图上根据点的顺序建立主席树,这个是根据年龄大小 或者等级高低建立主席树. 题意 大致就是一个二维区间的求和,但是 ...