CalendarMonthView
public struct CalendarMonthView
extension CalendarMonthView: Equatable
extension CalendarMonthView: View
extension CalendarMonthView: _ViewEmptyChecking
CalendarMonthView is used to display one month in the calendar.
Usage
var fm: DateFormatter {
let fm = DateFormatter()
fm.timeZone = Calendar.current.timeZone
fm.locale = Calendar.current.locale
fm.dateFormat = "yyyy MM dd"
return fm
}
var calendarItemTintAttributes: [CalendarPropertyRef: [CalendarItemControlState: Color]] {
let result: [CalendarPropertyRef: [CalendarItemControlState: Color]] = [
.title: [
.normal: Color(UIColor.blue),
.disabled: Color(UIColor.red),
.highlighted: Color(UIColor.green),
.selected: Color(UIColor.yellow)
],
.monthHeaderText: [
.normal: Color(UIColor.green)
],
.weekDayText: [
.normal: Color(UIColor.blue),
.highlighted: Color(UIColor.green)
],
.weekNumberText: [
.normal: Color(UIColor.green)
]
]
return result
}
let year = 2025
let month = 10
let startDate = self.fm.date(from: "2025 01 01")!
let endDate = self.fm.date(from: "2025 12 31")!
let selectedDate = self.fm.date(from: "2025 10 27")!
let disabledDates = CalendarDisabledDates(weekdays: [1, 2])
let weeks: [CalendarWeekInfo] = [
CalendarWeekInfo(year: year, month: month, weekNumber: 39, dates: [self.fm.date(from: "2025 09 28")!, self.fm.date(from: "2025 09 29")!, self.fm.date(from: "2025 09 30")!, self.fm.date(from: "2025 10 01")!, self.fm.date(from: "2025 10 02")!, self.fm.date(from: "2025 10 03")!, self.fm.date(from: "2025 10 04")!]),
CalendarWeekInfo(year: year, month: month, weekNumber: 40, dates: [self.fm.date(from: "2025 10 05")!, self.fm.date(from: "2025 10 06")!, self.fm.date(from: "2025 10 07")!, self.fm.date(from: "2025 10 08")!, self.fm.date(from: "2025 10 09")!, self.fm.date(from: "2025 10 10")!, self.fm.date(from: "2025 10 11")!]),
CalendarWeekInfo(year: year, month: month, weekNumber: 41, dates: [self.fm.date(from: "2025 10 12")!, self.fm.date(from: "2025 10 13")!, self.fm.date(from: "2025 10 14")!, self.fm.date(from: "2025 10 15")!, self.fm.date(from: "2025 10 16")!, self.fm.date(from: "2025 10 17")!, self.fm.date(from: "2025 10 18")!]),
CalendarWeekInfo(year: year, month: month, weekNumber: 42, dates: [self.fm.date(from: "2025 10 19")!, self.fm.date(from: "2025 10 20")!, self.fm.date(from: "2025 10 21")!, self.fm.date(from: "2025 10 22")!, self.fm.date(from: "2025 10 23")!, self.fm.date(from: "2025 10 24")!, self.fm.date(from: "2025 10 25")!]),
CalendarWeekInfo(year: year, month: month, weekNumber: 43, dates: [self.fm.date(from: "2025 10 26")!, self.fm.date(from: "2025 10 27")!, self.fm.date(from: "2025 10 28")!, self.fm.date(from: "2025 10 29")!, self.fm.date(from: "2025 10 30")!, self.fm.date(from: "2025 10 31")!, self.fm.date(from: "2025 11 01")!])
]
let model = CalendarMonthModel(year: year, month: month, weeks: weeks)
let dayTappedCallback: (Date, CalendarDayState) -> Void = { date, state in
print("Tapped date:\(date), state:\(state)")
}
CalendarMonthView(calendarStyle: .month, model: model, startDate: startDate, endDate: endDate, showsMonthHeader: true, selectedDate: selectedDate, disabledDates: disabledDates, dayTappedCallback: dayTappedCallback) { _ in
Circle()
}
.background(
Color.preferredColor(.primaryGroupedBackground)
)
.environment(\.showsWeekNumbers, true)
.environment(\.hasEventIndicator, true)
.environment(\.alternateCalendarType, .chinese)
.environment(\.alternateCalendarLocale, Locale(identifier: "en"))
.environment(\.calendarItemTintAttributes, calendarItemTintAttributes)
.environment(\.customLanguageId, "en")
-
init(calendarStyle:model: startDate: endDate: showsMonthHeader: showsOutOfMonthDates: selectedDate: selectedDates: selectedRange: disabledDates: dayTappedCallback: customEventView: componentIdentifier: ) Undocumented
Declaration
Swift
public init(calendarStyle: CalendarStyle, model: CalendarMonthModel, startDate: Date, endDate: Date, showsMonthHeader: Bool = false, showsOutOfMonthDates: Bool = true, selectedDate: Date? = nil, selectedDates: Set<Date>? = nil, selectedRange: ClosedRange<Date>? = nil, disabledDates: CalendarDisabledDates? = nil, dayTappedCallback: ((Date, CalendarDayState) -> Void)? = nil, @ViewBuilder customEventView: @escaping (Date) -> any View = { _ in EmptyView() }, componentIdentifier: String? = CalendarMonthView.identifier) -
Declaration
Swift
public static func == (lhs: `Self`, rhs: `Self`) -> Bool -
Undocumented
Declaration
Swift
static let identifier: String -
Undocumented
Declaration
Swift
init(_ configuration: CalendarMonthViewConfiguration) -
Declaration
Swift
@MainActor public var body: some View { get } -
Undocumented
Declaration
Swift
public var isEmpty: Bool { get }