jsdw_ios/QuickLocation/Manager/Theme/ThemeManager.swift

123 lines
3.9 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// ThemeManager.swift
// SHECommunity
//
// Created by 林 on 2024/11/28.
//
import UIKit
import SwiftyUserDefaults
import ObjectMapper
extension DefaultsKeys {
var themeColor: DefaultsKey<Data?> { .init("ThemeColor") }
var themeFont: DefaultsKey<Data?> { .init("ThemeFont") }
}
public class ThemeManager: NSObject {
public static let shared = ThemeManager()
private var themeColor = ThemeColor()
private var themeFont = ThemeFont()
public var color: ThemeColor {
guard let jsonData = Defaults[\.themeColor] else { return themeColor }
guard let themeColor = ThemeColor(data: jsonData) else { return self.themeColor }
self.themeColor = themeColor
return themeColor
}
public var font: ThemeFont {
guard let jsonData = Defaults[\.themeFont] else { return themeFont }
guard let themeFont = ThemeFont(data: jsonData) else { return self.themeFont }
self.themeFont = themeFont
return themeFont
}
/// 配置默认主题色、主题字体
public func configure(themeColor: ThemeColor?=nil, themeFont: ThemeFont?=nil) {
if let color = themeColor {
self.themeColor = color
}
if let font = themeFont {
self.themeFont = font
}
}
}
public struct ThemeColor: Mappable {
/// 主色
public var mainColor = UIColor(hexStr: "#7AD6FF")
/// 辅助色
public var auxColor = UIColor(hexStr: "#F9BC0C")
/// 导航栏标题颜色
public var navBarTitleColor = UIColor(hexStr: "#333333")
/// 页面标题、板块标题、选中后文字色
public var titleColor = UIColor(hexStr: "#1F1613")
public var titleAuxColor = UIColor(hexStr: "#333333")
/// 用于二级页面重要功能操作入口 描述性文字
public var subTitleColor = UIColor(hexStr: "#666666")
/// 用于次要信息、辅助功能,如提示说明文字 搜索栏默认文字 #999999
public var contentColor = UIColor(hexStr: "#999999")
/// 线条
public var lineColor = UIColor(hexStr: "#EEEEEE")
/// 背景色
public var backgroundColor = UIColor(hexStr: "#F2F2F2")
/// 商品卡片背景色
public var itemBackgroundColor = UIColor(hexStr: "#FFFFFF")
/// 文字背景色(文字为主色需要背景时专用)
public var textBackgroundColor = UIColor(hexStr: "#22A356")
/// 按钮disabled颜色(线条、背景、文字)
public var buttonDisabledColor = UIColor(hexStr: "#E6E6E6")
/// 智慧物业主色
public var propertyMainColor = UIColor(hexStr: "#2B67FF")
public init() {
}
public init?(map: Map) {
}
public mutating func mapping(map: Map) {
mainColor <- map["mainColor"]
auxColor <- map["auxColor"]
titleColor <- map["titleColor"]
titleAuxColor <- map["titleAuxColor"]
subTitleColor <- map["subTitleColor"]
contentColor <- map["contentColor"]
lineColor <- map["lineColor"]
backgroundColor <- map["backgroundColor"]
itemBackgroundColor <- map["itemBackgroundColor"]
textBackgroundColor <- map["textBackgroundColor"]
buttonDisabledColor <- map["buttonDisabledColor"]
}
}
public struct ThemeFont: Mappable {
///
public var navBarFont = UIFont.systemFont(ofSize: 18, weight: .bold)
///
public var titleFont = UIFont.systemFont(ofSize: 16, weight: .bold)
///
public var contentFont = UIFont.systemFont(ofSize: 12, weight: .regular)
public var subContentFont = UIFont.systemFont(ofSize: 10, weight: .regular)
public init() {
}
public init?(map: Map) {
}
public mutating func mapping(map: Map) {
navBarFont <- map["navBarFont"]
titleFont <- map["titleFont"]
contentFont <- map["contentFont"]
subContentFont <- map["subContentFont"]
}
}