CalendarView makes UIKit's UICalendarView with all its features available to SwiftUI.
Please note that UICalendarView
uses DateComponents rather than Date. CalendarView uses the same convention for consistency but might add support for Date
in the future.
import SwiftUI
import CalendarView
var body: some View {
CalendarView()
}
CalendarView uses the calendar, time zone and locale from the environment.
CalendarView()
.environment(\.locale, .init(identifier: "de"))
The font design can be configured by using the fontDesign
modifier.
CalendarView()
.fontDesign(.serif)
You can also set the available date range.
CalendarView(availableDateRange: thisYear)
You can set and update the current components (year, month) that should be visible in the calendar.
VStack {
CalendarView(visibleDateComponents: $visibleComponents)
Button("Today") {
withAnimation {
visibleComponents = calendar.dateComponents([.year, .month], from: .now)
}
}
}
Use the decorating
modifier to specify which dates should be decorated.
CalendarView()
.decorating(datesToDecorate)
Decorations can also be customized.
CalendarView()
.decorating(datesToDecorate) { dateComponents in
if dateComponents.day == specialDay {
return .customView {
Image(systemName: "star.fill")
.foregroundColor(.yellow)
}
}
return .default(color: .green, size: .small)
}
CalendarView supports selections of single and multiple dates.
CalendarView(selection: $selectedDates)
You can also configure which dates are selectable and deselectable.
CalendarView(selection: $selectedDates)
.selectable { dateComponents in
dateComponents.day > 15
}
.deselectable { dateComponents in
dateComponents.year == currentYear && dateComponents.month == currentMonth
}