SwiftUI 主题化

Test

SwiftUI Theming 是一个库,它可以在所有 Apple 平台(包括 iOS、macOS、tvOS、watchOS 和 visionOS)的 SwiftUI 中实现无缝主题化。

目录

  1. 安装
  2. 基本用法
  3. 使你的应用支持主题化
  4. 文档
  5. 许可证

安装

你可以将 swiftui-theming 作为 Swift Package 集成到你的 Xcode 项目中

Xcode GUI

  1. 转到 File > Add Package Dependency...
  2. 输入仓库 URL:https://github.com/alexanderwe/swiftui-theming
  3. 选择库并将其添加到你想要的目标。

使用 Package.swift

要通过 Package.swift 文件添加 swiftui-theming,请包含以下依赖项

.package(url: "https://github.com/alexanderwe/swiftui-theming", from: "0.1.0")

然后,将其添加到你的目标依赖项

.product(name: "Theming", package: "swiftui-theming")

基本用法

步骤 1:定义颜色样式

在创建新主题之前,请定义你的应用中可用的颜色样式

import Theming

extension ThemeColorStyle {
    /// A style for primary labels
    static let primaryLabel: Self = Self(name: "primaryLabel")
    // Define additional styles as needed
}

步骤 2:创建主题

定义颜色样式后,实现一个创建主题的方法

import Theming
// MARK: - Available Themes
extension Theme {
    static let `default`: Theme = .createDefaultTheme()
}

// MARK: - Theme Creation
extension Theme {
    private static func createDefaultTheme() -> Theme {
        let colors: Theme.ColorMap = [
            .primaryLabel: ThemeColor(lightColor: .primary, darkColor: .primary)
        ]
        return Theme(name: "Default", colors: colors)
    }
}

使你的应用支持主题化

要在你的应用中启用主题化,请将 ThemeManager 实例注入到你应用的场景中。

步骤 1:初始化 ThemeManager

声明一个 @State 属性来保存你应用定义中的 ThemeManager

import SwiftUI
import Theming

@main
struct MyApp: App {
    @State var myThemeManager: ThemeManager = ThemeManager(initialTheme: .default)

    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        .withThemeManager(themeManager: myThemeManager)
    }
}

步骤 2:在视图中访问主题颜色

使用 .themeColor 方法在你的 SwiftUI 视图中应用主题颜色

struct ContentView: View {
    var body: some View {
        Text("Hello World")
            .foregroundStyle(.themeColor(for: .primaryLabel))
    }
}

文档

完整的文档可在此处获取:here

许可证

此库在 MIT 许可证下发布。 有关详细信息,请参见 LICENSE 文件。