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 种不同的时钟样式
样式 | 图片 |
---|---|
经典 | ![]() |
新艺术风格 | ![]() |
绘画 | ![]() |
蒸汽朋克 | ![]() |
要设置样式:例如,蒸汽朋克风格使用 .environment(\.clockStyle, .steampunk)
。
struct ContentView: View {
@State private var clockStyle: ClockStyle = .classic
var body: some View {
ClockView().environment(\.clockStyle, clockStyle)
}
}
\.clockStyle
的类型是 enum ClockStyle
,它是 Identifiable
、CaseIterable
,并且有一个方便的方法来获取描述(英文):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)
在浅色模式下,你可以期待这样的结果
你可以通过将其添加为包依赖项来将 SwiftToTen 添加到 Xcode 项目中。
编辑你的 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