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()
使用還是挺簡單的(不過需要對每個控件進行設置, 對比較龐大的項目來說, 還是很蛋疼的)...
