CalendarKit
CalendarKit 是一个用于 iOS 和 Mac Catalyst 的 Swift 日历 UI 库。它开箱即用,外观类似于苹果日历应用,同时允许根据需要进行自定义。CalendarKit 由多个模块组成,这些模块可以一起使用或独立使用。
教程
需要帮助?
如果您有关于如何在应用程序中使用 CalendarKit 的编程问题,请创建一个带有问题标签的新 GitHub Issue。
查看示例应用以供参考。
从模板创建新的 Issue来报告错误或请求新功能。
示例
要使用 CocoaPods 试用 CalendarKit,请在终端中输入以下命令:
pod try CalendarKit
安装
CalendarKit 可以通过 Swift Package Manager 或 CocoaPods 安装。
Swift Package Manager(Xcode 12 或更高版本)
安装 CalendarKit 的首选方式是通过 Swift Package Manager。
- 在 Xcode 中,打开您的项目并导航到 File → Swift Packages → Add Package Dependency...
- 粘贴仓库 URL(
https://github.com/richardtop/CalendarKit.git
)并点击 Next。 - 对于 Rules,选择 Version (Up to Next Major) 并点击 Next。
- 点击 Finish。
CocoaPods
要安装它,请在您的 Podfile 中添加以下行:
pod 'CalendarKit'
使用方法
- 继承
DayViewController
- 实现
EventDataSource
协议以显示事件。
CalendarKit 要求 EventDataSource
返回一个符合 EventDescriptor
协议的对象数组,指定显示特定事件所需的所有信息。您可以自由使用默认的 Event
类作为模型,或创建自己的符合 EventDescriptor
协议的类。
// 返回特定日期的事件描述符数组
override func eventsForDate(_ date: Date) -> [EventDescriptor] {
var models = myAppEventStore.getEventsForDate(date) // 从存储/API获取事件(模型)
var events = [Event]()
for model in models {
// 创建新的EventView
let event = Event()
// 指定DateInterval
event.dateInterval = DateInterval(start: model.startDate, end: model.endDate)
// 将信息添加到字符串数组中:事件标题、副标题、地点
var info = [model.title, model.location]
info.append("\(datePeriod.beginning!.format(with: "HH:mm")) - \(datePeriod.end!.format(with: "HH:mm"))")
// 通过格式化所有需要显示的信息来设置事件的"text"值
event.text = info.reduce("", {$0 + $1 + "\n"})
events.append(event)
}
return events
}
在接收到特定日期的事件数组后,CalendarKit将处理视图布局和显示。
使用方法
要响应用户输入,请重写DayViewDelegate
的方法,例如:
override func dayViewDidSelectEventView(_ eventView: EventView) {
print("事件已被选中: \(eventview.data)")
}
override func dayViewDidLongPressEventView(_ eventView: EventView) {
print("事件已被长按: \(eventView.data)")
}
本地化
CalendarKit支持本地化,并使用iOS默认区域设置来显示月份和日期名称。每周的第一天也是根据iOS区域设置选择的。
样式
默认情况下,CalendarKit的外观类似于苹果日历应用,并完全支持深色模式。如果需要,可以轻松自定义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文件。