📅 TVDatePicker

一个用于 tvOSSwiftUI DatePicker 视图

Swift 5.3 Platforms Current Version License

❤️ 动机

目前,tvOS 还没有原生的 SwiftUI DatePicker。 这就是我创建这个 Swift 包来填补空白的原因 😊 API 模仿了适用于 iOSmacOSmacCatalyst 的原生 SwiftUI DatePicker 的 API。

ℹ️ 安装

只需将此 Swift 包作为依赖项添加到您的 Package.swift

.package(url: "https://github.com/crelies/TVDatePicker.git", from: "0.1.0")

🧭 用法

以下代码片段展示了如何在您的 tvOS 应用程序中使用 DatePicker view

TVDatePicker(
    _ titleKey: LocalizedStringKey,
    selection: Binding<Date>,
    minimumDate: Date,
    displayedComponents: Components = .all,
    calendar: Calendar = .current,
    dateFormatter: DateFormatter = DateFormatters.defaultFormatter,
    label: () -> Label
) // Available when Label conforms to View.

最初,该视图显示为一个按钮,其中包含一个水平堆栈,包含指定的 label、一个表示当前 selection 日期字符串的 Text 视图和一个 disclosure indicator Image 视图。 如果您按下按钮,将出现一个带有实际日期选择器视图的 sheet。 以下截图是一个例子

Screenshot of a date picker view usage example

📖 实现

DatePicker 视图是通过在 List / VStack 中使用多个带有 SegmentedPickerStylePicker 实现的。 每个 Picker 代表一个日期组件,如 yearmonthdate。 由于焦点引擎的问题,对于支持的 tvOS 版本 13.014.0 和 > 14.0,实现略有不同。 但我认为在大多数情况下您可以忽略这个细节。

🔒 局限性