YACalendar 0.0.3

YACalendar 0.0.3

Vodolazyi 维护。



  • 作者:
  • Anton Vodolazkyi

关于 Swift 5.0

YACalendar 是一个高度可定制的 iOS 日历,易于集成到您的应用程序中。目前,它支持年份和月份视图,具有垂直和水平滚动。我们的解决方案针对所有 iPhone 屏幕优化,因此它可以在像 iPhone 5 这样的旧设备上以及最新的 iPhone 模型上正确显示。YACalendar 不断进化,旨在成为一款通用的解决方案。我们计划添加事件管理功能和附加注释、链接和文档到事件的功能。

特性

YACalendar
带有 2 或 3 列的年份视图和月份视图
横屏和竖屏模式
垂直和水平滚动
分页
标记当前和选定的日期
标记过去的和未来的事件
可以设置周的开始时间为星期一或星期日
周末视图
选择一天、多天或日期范围

项目示例

查看示例项目 这里

需求

  • Swift 5.0
  • Xcode 11.2
  • iOS 10.0+

安装

通过CocoaPods安装YACalendar,请在您的Podfile中添加以下行

use_frameworks!

pod 'YACalendar'

然后确保在您的代码中添加此行:import YACalendar

使用YACalendar

  1. 创建一个日历视图实例并将其添加到视图层次结构中。
let calendarView = CalendarView(frame: frame)
view.addSubview(calendarView)

注意: 您可以使用界面构建器创建日历视图。这里是一个示例。

  1. 创建一个日历。如果想要更改一周的第一天,请更改firstWeekday属性。
let calendar = Calendar.current
calendar.firstWeekday = 2 // 1 - Sunday, 2 - Monday
  1. 指定日历网格类型和滚动方向。
calendarView.grid.calendarType = .oneOnOne
calendarView.grid.scrollDirection = .vertical
  1. 创建包含日历、开始日期和结束日期的日历数据对象。将它设置为日历视图的data属性。所有日期都将根据指定的日历以及开始和结束日期的范围进行显示。
calendarView.data = CalendarData(calendar: calendar, startDate: startDate, endDate: endDate)

注意:data属性设置后,日历将被重绘。

示例

月视图

垂直和水平滚动的月视图

let calendarView = CalendarView(frame: frame)
calendarView.grid.calendarType = .onOnOne
calendarView.data = CalendarData()

按年视图 3×4 网格

按年视图,竖向排列时采用 3×4 网格,横向排列时采用 5×2 网格

var calendarView = CalendarView(frame: frame)
calendarView.grid.calendarType = .threeOnFour
calendarView.data = CalendarData()

按年视图 2×3 网格

按年视图,竖向排列时采用 2×3 网格,横向排列时采用 3×1 网格

let calendarView = CalendarView(frame: frame)
calendarView.grid.calendarType = .twoOnThree
calendarView.data = CalendarData()

自定义设置

可以在 CalendarView 中直接配置这些设置。

日历属性

属性 描述
currentDate: Bool 日历应该滚动的日期
selectionType: SelectionType 选择类型(用于选择日期):单选、多选、区间

日历方法

方法 描述
func scroll(to date: Date) 滚动到指定的日期所在的月份。
func selectDay(with date: Date) 选择或取消选择特定日期。使用此方法选择或取消选择单个日期。
func selectDays(with dates: [Date]) 选择或取消选择指定日期。使用此方法选择或取消选择多个日期。
func selectRange(with startDay: Date, endDate: Date) 选择起始日期和结束日期之间的日期范围。
func setEvents(_ events: [CalendarEvent]) 将事件设置到事件中指定的日期。
func disableDays(with dates: [Date]) 禁用指定的日期。

更改日期、月份、月份表头、日期符号和年份表头的显示效果

如果您想更改这些元素中的任何一个的字体、颜色或其他 UI 属性,您必须覆盖相应的元素配置。

例如,要更改日期的文字颜色

  1. 继承 DayConfig 并覆盖方法。
class MyDayConfig: DayConfig {
    
    override func textColor(for state: DayState, indicator: DayIndicator) -> UIColor {
        return .black
    }
}
  1. 将配置设置到日历中。
calendarView.config.day = MyDayConfig()

网格属性

您可以通过调用 calendar.grid 来设置这些设置

属性 描述
calendarType:日历类型 月份的网格表示。可能的值:oneOnOne, twoOnThree, threeOnFour
scrollDirection:滚动方向 设置垂直或水平滚动方向

项目计划

我们对改进 YACalendar 有长远的计划。我们希望添加

  • 事件视图(创建、管理、重复事件)
  • 预约安排视图
  • 暗黑模式

发布说明

版本 1.0

  • 发布版本。

许可证

YACalendar 是基于 MIT 许可证发布的。有关详细信息,请参阅 LICENSE 文件。