AllanJuenemann/CalendarView
UICalendarView for SwiftUI
Usage
Displaying the calendar
import SwiftUI
import CalendarView
var body: some View {
CalendarView()
}<img src="/Images/calendar.png" width="200px" />
Configuring the calendar
CalendarView uses the calendar, time zone and locale from the environment.
CalendarView()
.environment(\.locale, .init(identifier: "ja"))<img src="/Images/calendar_ja.png" width="200px" />
The font design can be configured by using the fontDesign modifier.
CalendarView()
.fontDesign(.serif)<img src="/Images/calendar_serif.png" width="200px" />
You can also set the available date range.
CalendarView(availableDateRange: specialEvent)<img src="/Images/calendar_range.png" width="200px" />
Updating visible components
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)
}
}
}Using decorations
Use the decorating modifier to decorate specific days.
CalendarView()
.decorating([DateComponents(day: 16)])Decorations can also be customized.
CalendarView()
.decorating(specialDates, systemImage: "star.fill", color: .yellow)
.decorating(otherDates, color: .green, size: .large)<img src="/Images/calendar_decorations.png" width="200px" />
Handling selections
CalendarView supports selections of single and multiple dates.
CalendarView(selection: $selectedDates)<img src="/Images/calendar_selections.png" width="200px" />
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
}Package Metadata
Repository: AllanJuenemann/CalendarView
Stars: 75
Forks: 8
Open issues: 0
Default branch: main
Primary language: swift
License: MIT
Topics: calendar, ios, swiftui, uicalendarview
README: README.md