CKCalendar 是一个简洁、易于定制的 iOS 日历控件。只需将头文件、实现文件和资源文件添加到你的项目中,并链接其框架依赖项:QuartzCore 和 CoreGraphics。
默认的日历设计由 John Anderson 提供。谢谢 John!
CKCalendar 提供代理回调以与日历交互。首先,请确保在 CKCalendarView
实例上设置了 delegate
属性
- (void)someMethod {
CKCalendarView *calendar = [[CKCalendarView alloc] init];
[self.view addSubview:calendar];
calendar.delegate = self;
}
CKCalendarDelegate
协议中有许多代理方法,可以轻松定制和扩展日历的行为。
当用户尝试选择一个日期(通过点击)时,如果代理实现了它,日历将调用其代理的 calendar:willSelectDate:
方法,传入用户选择的日期。返回 NO
将拒绝选择。例如,如果你的应用程序是用于预订,你可能不想允许选择已经预订的日期。
选择日期后,如果代理实现了它,日历将调用你的代理的 calendar:didSelectDate:
方法。你可以使用此回调来跟踪用户选定的日期。
当用户点击一个已选日期时,日历将沿着与上述所述选择生命周期相同的方式调用 calendar:willDeselectDate:
和 calendar:didDeselectDate:
。
同样,当用户尝试转到上个月或下个月时,如果代理实现了它,日历将调用代理的 calendar:willChangeToMonth:
方法给你一个机会决定是否允许这样做。在月份改变后,将调用代理的 calendar:didChangeToMonth:
方法,并将其第一个与代理一同传递。
为了完全控制显示的日期,可以实现代理方法 calendar:configureDateItem:forDate:
。日历将传递一个 CKDateItem
的实例给代理;这个 dateItem 可以被修改,这将影响它所表示的日期的显示。
你可以启用在当前月份之前和之后完全填充剩余日历空间。非当前月份单元格的样式可以自定义。
calendarView.onlyShowCurrentMonth = NO;
该日历被编写为易于样式化,以确保您能够在应用程序中使其无缝。您可以自定义几乎所有元素的字体、文本颜色和背景颜色。您还可以配置日历应从星期几开始。日历允许您设置可选的最小和/或最大可选日期(这些日期也可以进行样式化)。如果您还有尚未满足的功能,请添加它!目前代码可读且易于扩展。祝您玩得开心!
版权(c)2013 Jason Kozemczak
特此授予任何人无限制使用本软件和相关文档文件(“软件”)的自由,包括但不限于使用、复制、修改、合并、发布、分发、转授权和/或销售软件副本的权利,并允许将软件提供给他人以便他们这样做,但必须遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“现状”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途的适用性和非侵权性。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论该责任是基于合同、侵权或其他原因产生的,无论是否与软件或其使用或其他情况有关。