CalendarKit
CalendarKit 是一个用于 iOS 和 Mac Catalyst 的 Swift 日历 UI 库。它默认看起来与苹果日历应用相似,同时在需要时允许自定义。CalendarKit 由多个模块组成,这些模块可以一起使用或独立使用。
教程
需要帮助?
如果您对如何在您的应用程序中使用 CalendarKit 有 编程问题,请在 StackOverflow 上使用 CalendarKit 标签提问。查看 示例应用程序 以获取参考。
请仅使用 GitHub Issues 报告错误或请求新功能。
示例
要使用 CocoaPods 安装 CalendarKit,请在 Terminal 中执行以下命令
pod try CalendarKit
安装
CalendarKit 可以通过 Swift Package Manager 或 CocoaPods 替换安装。
Swift Package Manager (Xcode 12 或更高版本)
安装 CalendarKit 的首选方式是通过 Swift Package Manager。
- 在 Xcode 中,打开您的项目,然后导航到 文件 → Swift 包 → 添加包依赖...
- 粘贴仓库 URL(
https://github.com/richardtop/CalendarKit.git
),然后点击 下一步。 - 对于 规则,选择 版本(到下一个主要版本),然后点击 下一步。
- 点击 完成。
CocoaPods
要安装它,请将以下行添加到您的 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)
需求
- iOS 11.0+, macOS (Catalyst) 10.15+
- Swift 5.7+
贡献
当前开发中的功能列表可以在issues页面查看。
在贡献之前,请审阅指南和代码风格。
作者
Richard Topchii
许可证
CalendarKit 采用MIT许可证。有关更多信息,请参阅LICENSE文件。