封装颜色管理类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83

//
// FyColor.swift
// FyColor
//
// Created by l on 2020/3/13.
// Copyright © 2020 ifeiyv. All rights reserved.
//
import UIKit

class FyColors{

///深色模式适配 手动控制适配模式 启用 关闭(如非必要,可移除相关代码)
static let isOpenDarkModel:Bool = true


//MARK: eg文字颜色
//文字颜色 如果有多种文字颜色可以设置多个 eg: labelTextColor
public class var labelTextColor: UIColor {
return darkModeColor(dark:UIColor.white,light:UIColor.black)
}
//文字颜色 如果有多种文字颜色可以设置多个 eg: buttonTextColor
public class var buttonTextColor: UIColor {
return darkModeColor(dark:UIColor.white,light:UIColor.black)
}

//文字颜色 如果有多种文字颜色可以设置多个 eg: fieldTextColor
public class var fieldTextColor: UIColor {
return darkModeColor(dark:UIColor.white,light:UIColor.black)
}

//MARK: eg背景颜色
//背景颜色 如果有多种文字颜色可以设置多个 eg: labelBgColor
public class var labelBgColor: UIColor {
return darkModeColor(dark:UIColor.black,light:UIColor.white)
}
//背景颜色 如果有多种文字颜色可以设置多个 eg: buttonBgColor
public class var buttonBgColor: UIColor {
return darkModeColor(dark:UIColor.black,light:UIColor.white)
}

//背景颜色 如果有多种背景颜色可以设置多个 eg: viewBgColor
public class var viewBgColor: UIColor {
return darkModeColor(dark:UIColor.black,light:UIColor.white)
}

//.........................................
//根据需求增加相对应的颜色即可
//darkModeColor(dark:UIColor.white,light:UIColor.black)
//实际开发中不可能只有 UIColor.white,UIColor.black 两种颜色。
//根据产品需求增加和修改对应的颜色


//检测当前是否是深色模式
class func isDarkStyle() -> Bool{
if(!isOpenDarkModel){
return false
}
if #available(iOS 13.0, *){
let currentMode = UITraitCollection.current.userInterfaceStyle
if(currentMode == .dark){
return true
}
}
return false
}
// 适配 动态颜色
class func darkModeColor(dark:UIColor,light:UIColor) ->UIColor{
if(!isOpenDarkModel){
return light
}
if #available(iOS 13.0, *){
return UIColor{(trainCollection) -> UIColor in
if trainCollection.userInterfaceStyle == .dark{
return dark
}else{
return light
}
}
}
return light
}
}
使用方式:(深色模式切换时,系统会重新渲染颜色,自动在设置好的两种颜色中进行切换)
1
2
3
4
5
6
7
8
label.textColor = FyColors.labelTextColor

label.backgroundColor = FyColors.labelBgColor

//或者在此方法监听深色模式进行手动切换
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
}