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
- 创建一个日历视图实例并将其添加到视图层次结构中。
let calendarView = CalendarView(frame: frame)
view.addSubview(calendarView)
注意: 您可以使用界面构建器创建日历视图。这里是一个示例。
- 创建一个日历。如果想要更改一周的第一天,请更改
firstWeekday
属性。
let calendar = Calendar.current
calendar.firstWeekday = 2 // 1 - Sunday, 2 - Monday
- 指定日历网格类型和滚动方向。
calendarView.grid.calendarType = .oneOnOne
calendarView.grid.scrollDirection = .vertical
- 创建包含日历、开始日期和结束日期的日历数据对象。将它设置为日历视图的
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 属性,您必须覆盖相应的元素配置。
例如,要更改日期的文字颜色
- 继承
DayConfig
并覆盖方法。
class MyDayConfig: DayConfig {
override func textColor(for state: DayState, indicator: DayIndicator) -> UIColor {
return .black
}
}
- 将配置设置到日历中。
calendarView.config.day = MyDayConfig()
网格属性
您可以通过调用 calendar.grid
来设置这些设置
属性 | 描述 |
---|---|
calendarType:日历类型 | 月份的网格表示。可能的值:oneOnOne, twoOnThree, threeOnFour |
scrollDirection:滚动方向 | 设置垂直或水平滚动方向 |
项目计划
我们对改进 YACalendar 有长远的计划。我们希望添加
- 事件视图(创建、管理、重复事件)
- 预约安排视图
- 暗黑模式
发布说明
版本 1.0
- 发布版本。
许可证
YACalendar
是基于 MIT 许可证发布的。有关详细信息,请参阅 LICENSE
文件。