CalendarKit CalendarKit License SwiftPM compatible Swift Compatibility Platform Compatibility Tag Version

YouTube Channel Subscribers Twitter GitHub followers

Richard Topchii 的 Telegram

CalendarKit

CalendarKit 是一个用于 iOS 和 Mac Catalyst 的 Swift 日历 UI 库。它开箱即用时外观类似于 Apple 日历应用,同时允许在需要时进行自定义。CalendarKit 由多个模块组成,这些模块可以一起使用或独立使用。

教程

需要帮助?

如果您有关于如何在您的应用中使用 CalendarKit 的编程问题创建一个带有 question 标签的新的 GitHub Issue

查看 示例应用 以供参考。

从模板创建新的 Issue 以报告错误或请求新功能。

示例

视频

示例应用

安装

CalendarKit 可以通过 Swift Package Manager 或 CocoaPods 安装。

Swift Package Manager (Xcode 12 或更高版本)

首选的 CalendarKit 安装方式是通过 Swift Package Manager

  1. 在 Xcode 中,打开您的项目并导航到 FileSwift PackagesAdd Package Dependency...
  2. 粘贴仓库 URL (https://github.com/richardtop/CalendarKit.git) 并点击 Next
  3. 对于 Rules,选择 Version (Up to Next Major) 并点击 Next
  4. 点击 Finish

向您的应用添加软件包依赖项

CocoaPods

⚠️警告:CocoaPods 支持已弃用,并将在稍后日期移除。建议将您的 CalendarKit 安装迁移到使用 Swift Package Manager。

要安装它,请将以下行添加到您的 Podfile

pod 'CalendarKit'

向 Xcode 项目添加 Pods

用法

  1. 继承 DayViewController
  2. 实现 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 区域设置选择。

GermanNorwegian

样式

默认情况下,CalendarKit 的外观类似于 Apple 日历应用,并完全支持深色模式。如果需要,CalendarKit 的外观可以轻松自定义。应用自定义样式的步骤如下

  1. 创建一个新的 CalendarStyle 对象(或复制现有的对象)
  2. 通过更新属性来更改样式。
  3. 使用新的 CalendarStyle 调用 updateStyle 方法。
let style = CalendarStyle()
style.backgroundColor = UIColor.black
dayView.updateStyle(style)

Light theme Dark theme

要求

贡献

当前正在开发中的功能列表可以在 issues 页面上查看。

在贡献之前,请查看指南和代码风格

作者

Richard Topchii

许可证

CalendarKit 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。