SwiftUI(一) 暗黑模式

233 阅读1分钟

在SwiftUI中,设置一个公共的颜色库,在使用颜色时直接用库中的颜色。

在系统中切换暗黑模式,App就会自动切换到暗黑模式了。

运行效果:
IMB_oh7hEZ.GIF

1、调用:

Text("名称")
   .font(.system(size: 16))
   .bold() //加粗
   .foregroundColor(ColorEx.shared.Title())

2、实现:

import SwiftUI

// 自定义颜色主题 - 适配暗黑模式
class ColorEx: ObservableObject{
    static let shared = ColorEx() //单例 (避免在页面中创建无数个ColorEx对象,占用内存,影响性能)

    /// 是否是暗黑模式 true是 false否
    func isDarkMode() -> Bool {
        return UITraitCollection.current.userInterfaceStyle == UIUserInterfaceStyle.dark
    }

    /// 背景主题颜色     深灰色/淡灰色
    func Bg() -> Color { return         isDarkMode() ? Color("303030"):Color("F8F8F8") }
    /// 内容、cell颜色   黑色/白色
    func ContView() -> Color { return   isDarkMode() ? Color("000000"):Color("FFFFFF") }

    /// 主文字颜色        白色/黑色
    func Title() -> Color { return      isDarkMode() ? Color("FFFFFF"):Color("000000") }
    /// 副文字颜色     浅白色/灰色
    func Subtitle() -> Color { return   isDarkMode() ? Color("999999"):Color("999999") }
    /// 灰色文字     666666
    func Graytitle() -> Color { return  isDarkMode() ? Color("FFFFFF"):Color("666666") }

    /// 分割线
    func Line() -> Color { return       isDarkMode() ? Color("505050"):Color("E2E1E2") } 
    /// 登录页输入框背景颜色、代码块背景颜色
    func Input() -> Color { return      isDarkMode() ? Color("2F2F2F"):Color("F5F5F5") }
    /// App主题蓝
    func ThemeBlue() -> Color { return  Color("004098") }
}