CalendarKit 是一个用于 iOS 和 Mac Catalyst 的 Swift 日历 UI 库。它开箱即用时外观类似于 Apple 日历应用,同时允许在需要时进行自定义。CalendarKit 由多个模块组成,这些模块可以一起使用或独立使用。
如果您有关于如何在您的应用中使用 CalendarKit 的编程问题,创建一个带有 question 标签的新的 GitHub Issue。
查看 示例应用 以供参考。
从模板创建新的 Issue 以报告错误或请求新功能。
CalendarKit 可以通过 Swift Package Manager 或 CocoaPods 安装。
首选的 CalendarKit 安装方式是通过 Swift Package Manager。
https://github.com/richardtop/CalendarKit.git
) 并点击 Next。
要安装它,请将以下行添加到您的 Podfile
pod 'CalendarKit'
DayViewController
EventDataSource
协议以显示事件。CalendarKit 需要 EventDataSource
返回一个对象数组,这些对象遵循 EventDescriptor
协议,指定显示特定事件所需的所有信息。您可以自由使用默认的 Event
类作为模型,或创建您自己的类来遵循 EventDescriptor
协议。
// Return an array of EventDescriptors for particular date
override func eventsForDate(_ date: Date) -> [EventDescriptor] {
var models = myAppEventStore.getEventsForDate(date) // Get events (models) from the storage / API
var events = [Event]()
for model in models {
// Create new EventView
let event = Event()
// Specify DateInterval
event.dateInterval = DateInterval(start: model.startDate, end: model.endDate)
// Add info: event title, subtitle, location to the array of Strings
var info = [model.title, model.location]
info.append("\(datePeriod.beginning!.format(with: "HH:mm")) - \(datePeriod.end!.format(with: "HH:mm"))")
// Set "text" value of event by formatting all the information needed for display
event.text = info.reduce("", {$0 + $1 + "\n"})
events.append(event)
}
return events
}
在收到特定日期的事件数组后,CalendarKit 将处理视图布局和显示。
要响应用户输入,请重写 DayViewDelegate
的方法,例如
override func dayViewDidSelectEventView(_ eventView: EventView) {
print("Event has been selected: \(eventview.data)")
}
override func dayViewDidLongPressEventView(_ eventView: EventView) {
print("Event has been longPressed: \(eventView.data)")
}
CalendarKit 支持本地化,并使用 iOS 默认区域设置来显示月份和日期名称。一周的第一天也根据 iOS 区域设置选择。
默认情况下,CalendarKit 的外观类似于 Apple 日历应用,并完全支持深色模式。如果需要,CalendarKit 的外观可以轻松自定义。应用自定义样式的步骤如下
CalendarStyle
对象(或复制现有的对象)CalendarStyle
调用 updateStyle
方法。let style = CalendarStyle()
style.backgroundColor = UIColor.black
dayView.updateStyle(style)
当前正在开发中的功能列表可以在 issues 页面上查看。
在贡献之前,请查看指南和代码风格。
Richard Topchii
CalendarKit 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。