一个用于 tvOS
的 SwiftUI
DatePicker
视图
目前,tvOS
还没有原生的 SwiftUI
DatePicker
。 这就是我创建这个 Swift 包来填补空白的原因 😊 API
模仿了适用于 iOS
、macOS
和 macCatalyst
的原生 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。 以下截图是一个例子
DatePicker
视图是通过在 List
/ VStack
中使用多个带有 SegmentedPickerStyle
的 Picker
实现的。 每个 Picker
代表一个日期组件,如 year
、month
或 date
。 由于焦点引擎的问题,对于支持的 tvOS 版本 13.0
、14.0
和 > 14.0
,实现略有不同。 但我认为在大多数情况下您可以忽略这个细节。
DatePicker
仅使用 Gregorian calendar
进行了测试。year
组件一次仅显示 10
年(相对于指定 minimum date
的年份,selected year +/- 5 years
)。year
组件尊重 minimum date
。 相反,all months of a year
和 all days of a month
始终可见。hourAndMinute
组件始终显示一天的所有 24 hours
。hourAndMinute
组件仅支持 minute
每五分钟一个步长。