MDCalendar 1.0.0

MDCalendar 1.0.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新发布2014年12月

Michael DiStefano 维护。



MDCalendar 是一个用于 iOS 7(及以上)的日历式日期选择器,它使用 UICollectionView 以流行的“月视图”格式排列日历。

example_calendar

实现说明

MDCalendar 在设计时注重灵活性,因此被实现为 UIView 的子类。这意味着日历可以作为一个子视图实例化,添加到现有的视图层次结构中,或者作为 UIViewController 的唯一视图添加到导航栈中。后者在 MDCalendarDemo 项目中得到了演示。

在设计和 MDCalendar 时,我们采用了最小化基于显式存储的模型的理念。因此,绝大多数日期和几何数学都是在运行时计算的。特别是对于几何计算,我们已经实现了缓存,并且 MDCalendar 已用 [NSDate distantFuture]endDate 进行了测试。

使用示例

假设一个名为 EventDetailsViewController 的视图控制器希望允许用户使用漂亮的日历选择器修改活动日期。嗯...让我们用 MDCalendar 来做这个!EventDetailsViewControllerUITableViewController 的子类,选择任何一行应该将日历推上屏幕,并允许用户修改 EventDetailsViewControllereventDate 属性

建议的实现方法是创建一个稀疏的视图控制器来显示 MDCalendar(请参考示例项目以了解如何操作)。这个视图控制器,让我们称它为 MDEventCalendarViewController(富有创意,我知道),将被推入导航栈。

事件 & 委托

在上面的示例中,我们需要将日历事件从子控制器类通讯回父视图控制器。为了优雅地做到这一点,我们需要在 MDEventCalendarViewController 中子类化 MDCalendarDelegate 并在视图控制器头文件中暴露这个协议,MDEventCalendarDelegate。现在,父视图控制器,EventDetailsViewController,可以设置其代理:id<MDEventCalendarDelegate>delegate

此代理将基本传递来自 MDCalendarDelegate 的消息到父视图控制器。子类化 MDCalendarDelegate 的优点是,如果重新使用您的稀疏视图控制器,它可以包含一些关于如何处理 MDCalendarDelegate 事件的逻辑。

可访问性

MDCalendar 1.0.0 版本具备对 VoiceOver 的支持,并为每个日期提供了适当的可访问性标签。