SwiftClockUI

Xcode Unit Test

SwiftUI 的时钟 UI

这个库已经过测试

为了兼容低于 13.3 版本的 Xcode,我建议检出 1.4.x 标签,它应该可以与 Xcode 11 及更高版本编译。

绑定日期

struct ContentView: View {
    @State private var date = Date()

    var body: some View {
        ClockView().environment(\.clockDate, $date)
    }
}

只需设置 .environment(\.clockDate, $date)$date 必须是一个绑定。 如果你想要一些常量(仅用于显示时间),你可以传递 .constant(yourDate)

更改时钟样式

有 4 种不同的时钟样式

样式 图片
经典 Clock View with Classic style
新艺术风格 Clock View with Art Nouveau style
绘画 Clock View with Drawing style
蒸汽朋克 Clock View with Steampunk style

要设置样式:例如,蒸汽朋克风格使用 .environment(\.clockStyle, .steampunk)

struct ContentView: View {
    @State private var clockStyle: ClockStyle = .classic

    var body: some View {
        ClockView().environment(\.clockStyle, clockStyle)
    }
}

\.clockStyle 的类型是 enum ClockStyle,它是 IdentifiableCaseIterable,并且有一个方便的方法来获取描述(英文):public var description: String

当你想迭代这个 enum 以便用户选择时钟样式时,它非常有用,例如你可以轻松地做到这样

struct StylePicker: View {
    @Binding var clockStyle: ClockStyle

    var body: some View {
        Picker("Style", selection: clockStyle) {
            ForEach(ClockStyle.allCases) { style in
                Text(style.description).tag(style)
            }
        }
        .pickerStyle(SegmentedPickerStyle())
    }
}

更改元素颜色

你也可以更改时钟元素的颜色。 同样是通过更改一些 .environment 键。

ClockView()
    .environment(\.clockArmColors, ClockArmColors(
        minute: .red,
        hour: .blue
    ))
    .environment(\.clockBorderColor, .orange)
    .environment(\.clockIndicatorsColor, .green)

在浅色模式下,你可以期待这样的结果

Clock View with Classic style and some colors changed

安装

Xcode

你可以通过将其添加为包依赖项来将 SwiftToTen 添加到 Xcode 项目中。

  1. File 菜单中,选择 Swift Packages › Add Package Dependency...
  2. 在包仓库 URL 测试字段中输入 "https://github.com/renaudjenny/SwiftClockUI"

作为包依赖项

编辑你的 Package.swift 以添加此库。

let package = Package(
    ...
    dependencies: [
        .package(url: "https://github.com/renaudjenny/SwiftClockUI", from: "2.0.0"),
        ...
    ],
    targets: [
        .target(
            name: "<Your project name>",
            dependencies: ["SwiftClockUI"]),
        ...
    ]
)

使用此库的应用

对于维护者

如果你想帮助维护这个库,我建议在 pre-commit 上添加这个 git hooks

在一个在仓库文件夹中打开的终端中,执行这些命令

echo '#!/bin/sh' > .git/hooks/pre-commit
echo '' >> .git/hooks/pre-commit
echo 'swiftlint' >> .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit