A SwiftUI DatePicker view for tvOS
Currently there is no native SwiftUI DatePicker for tvOS. That's why I created this Swift package to fill the hole đ
The API mimics the one of the native SwiftUI DatePicker available for iOS, macOS and macCatalyst.
Just add this Swift package as a dependency to your Package.swift:
.package(url: "https://github.com/crelies/TVDatePicker.git", from: "0.1.0")The following code snippet shows how to use the DatePicker view in your tvOS application:
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.At first the view appears as a button with a horizontal stack containing the specified label, a Text view representing the current selection date string and a disclosure indicator Image view. If you press the button a sheet with the actual date picker view appears. The following screenshot is an example:
The DatePicker view is implemented by using multiple Pickers with the SegmentedPickerStyle inside a List / VStack.
Each Picker represents a date component like year, month or date. Due to issues with the focus engine the implementation slightly differs for the supported tvOS versions 13.0, 14.0 and > 14.0. But I think that you can ignore this detail in most cases.
â ī¸ TheDatePickerwas only tested with theGregorian calendar.- The
yearcomponent displays only10years at a time (selected year +/- 5 yearswith respect to the year of the specifiedminimum date). â ī¸ Currently only theyearcomponent respects theminimum date. On the contraryall months of a yearandall days of a monthare visible at all time.- Currently the
hourAndMinutecomponent always displays all24 hoursof a day. - The
hourAndMinutecomponent supports only steps by five for theminute.
