无论您是在编写另一个待办事项跟踪器或日历应用,还是只想让用户避开使用UIDatePicker
的烦恼,并让他们快速高效地选择日期——CrispyCalendar正是您需要的日历UI框架。
功能
- 考虑本地化编写。
具体来说,测试了众多(甚至有些荒谬)的日历类型、区域标识符和书写方向的组合。此外,由于该框架仅使用标准Apple框架(因此,它们的翻译)且不含任何第三方代码,所以没有单个翻译错误。 - 易于集成、可定制选项和可扩展性——您可以自由选择任何或所有这些。
框架包含解决常见任务的现成组件;在许多情况下,一行代码即可应用丰富的用户界面,让您能够专注于业务逻辑的实现。但与此同时,每个这样的解决方案都配备了详细的调整选项,且设计为模块化,允许您自由重用和组合基本块以满足您的特定需求。 - 性能优化。
即便是在性能卓越的设备,如iPhone 5上,日历也能以可接受的帧率进行渲染。为了实现这一点,不得不做出一些小的牺牲,但总体结果仍然令人瞩目。 - 支持Objective C。
无论您受限于旧代码,还是尚未准备好在生产代码中使用Swift,都可以从Objective C使用CrispyCalendar。主要是缺少特定于Swift的特性,但在这里和那里可能存在盲点。
入门
- 入门指南包含框架概述和基本概念的描述。
- 在示例目录中可以找到常见的使用模式和代码例子。
- 演示项目.
- API参考包含大多数公开类型和标识符的详细描述。
- 内部参考 explains a number of internal design decisions and reasoning. Although it is not yet comprehensive, work is ongoing.
安装
Cocoapods(推荐使用)
CocoaPods是Swift和Objective-C cocoa项目的依赖项管理器。它拥有超过53,000个库,并在超过300万个应用程序中使用。有关更多信息和使用说明,请参阅:使用Cocoapods。
要使用Cocoapods将CrispyCalendar集成到您的Xcode项目中,请在Podfile中指定它:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.3'
target 'TargetName' do
pod 'CrispyCalendar', '~> 1.0.1'
end
然后运行以下命令:
$ pod install
手动
在Xcode中打开示例项目并构建CrispyCalendar
框架target。然后将其嵌入到您的项目中,并添加到app target的Linked Frameworks and Libraries
部分。
屏幕截图
外观定制
所有字体、颜色和其他外观细节都可以通过相应的属性进行自定义。CPCCalendarView 也支持通过 UIAppearance 对Objective-C中表示的属性进行自定义。
默认 | 基本从Debt Control来 | 输入视图来自Debt Control |
---|---|---|
![]() |
![]() |
![]() |
简单选择
预构建UI通常使用可以显示单月的CPCMonthView。可以将CPCMultiMonthsView用作包含月份视图的容器,以实现共享选择处理和其他功能。
单日选择 | 日期范围选择 |
---|---|
![]() |
![]() |
有序选择和无序选择
选择过程完全由相应视图的代理外部控制。注意,容器内部视图的代理不受支持。
无序选择 | 有序选择 |
---|---|
![]() |
![]() |
自定义绘制处理程序
CPCMonthView不包含任何真正的子视图,但它是从“标题”、“网格”和“日单元格”逻辑上的绘制而成的,支持通过自定义CPCDayCellRenderer进行自定义日渲染。
自定义单元格渲染器示例 |
---|
![]() |
本地化
任何组件使用的区域设置不能显式设置,但日历的区域设置将被尊重。框架使用[[NSBundle mainBundle] preferredLocalizations] firstObject]
作为默认区域设置,包括为未显式设置区域设置的日历设置。
非公历日历渲染 |
---|
![]() |
其他
完全支持可用日期限制、RTL和横幅方向。
日期限制 | 列模式 |
---|---|
![]() |
![]() |
RTL布局 |
---|
![]() |
信用
CrispyCalendar 由 Cleverpumpkin, Ltd 拥有并维护。
CrispyCalendar最初是由Kirill Bystrov创建的,作为对高质量的日历渲染库缺乏的一种回应。存在一个Android的对应版本(但API和UX都不相同),您可以在以下链接中查看: CrunchyCalendar。
授权
CrispyCalendar 以MIT许可证发布。详细信息请参阅LICENSE。