We can style DatePicker using datePickerStyle modifier. There are 4 values to choose from.
.automatic : sets DatePicker style based on system its being rendered.
.compact : sets DatePicker style to compact display which renders date and time views that can be tapped to reveal calendar and time picker.
.graphical : sets DatePicker style to display calendar view.
.wheel : sets DatePicker style to be displayed in selection wheel style.
Let’s look at them one by one.
.automatic DatePicker Style
struct DatePickerExample: View {
@State private var date = Date()
let dateRange: ClosedRange<Date> = {
let calendar = Calendar.current
let startComponents = DateComponents(year: 2021, month: 12, day: 15)
let endComponents = DateComponents(year: 2021, month: 12, day: 30, hour: 23, minute: 59, second: 59)
return calendar.date(from:startComponents)!
...
calendar.date(from:endComponents)!
}()
var body: some View {
DatePicker(
"Pick a date",
selection: $date,
in: dateRange,
displayedComponents: [.date, .hourAndMinute])
.padding()
.datePickerStyle(.automatic)
}
}
.compact DatePickerStyle
struct DatePickerExample: View {
@State private var date = Date()
let dateRange: ClosedRange<Date> = {
let calendar = Calendar.current
let startComponents = DateComponents(year: 2021, month: 12, day: 15)
let endComponents = DateComponents(year: 2021, month: 12, day: 30, hour: 23, minute: 59, second: 59)
return calendar.date(from:startComponents)!
...
calendar.date(from:endComponents)!
}()
var body: some View {
DatePicker(
"Pick a date",
selection: $date,
in: dateRange,
displayedComponents: [.date, .hourAndMinute])
.padding()
.datePickerStyle(.compact)
}
}
Note: .automatic and .compact look same in our case as the style for .automatic is a system pick.
.graphical DatePickerStyle
struct DatePickerExample: View {
@State private var date = Date()
let dateRange: ClosedRange<Date> = {
let calendar = Calendar.current
let startComponents = DateComponents(year: 2021, month: 12, day: 15)
let endComponents = DateComponents(year: 2021, month: 12, day: 30, hour: 23, minute: 59, second: 59)
return calendar.date(from:startComponents)!
...
calendar.date(from:endComponents)!
}()
var body: some View {
DatePicker(
"Pick a date",
selection: $date,
in: dateRange,
displayedComponents: [.date, .hourAndMinute])
.padding()
.datePickerStyle(.graphical)
}
}
.wheel DatePickerStyle
struct DatePickerExample: View {
@State private var date = Date()
let dateRange: ClosedRange<Date> = {
let calendar = Calendar.current
let startComponents = DateComponents(year: 2021, month: 12, day: 15)
let endComponents = DateComponents(year: 2021, month: 12, day: 30, hour: 23, minute: 59, second: 59)
return calendar.date(from:startComponents)!
...
calendar.date(from:endComponents)!
}()
var body: some View {
DatePicker(
"Pick a date",
selection: $date,
in: dateRange,
displayedComponents: [.date, .hourAndMinute])
.padding()
.datePickerStyle(.wheel)
}
}