如何快速集成 THCalendarDatePicker:5 分钟搞定高颜值 iOS 日期选择器
【免费下载链接】THCalendarDatePickerA DatePicker based on a custom calendar view项目地址: https://gitcode.com/gh_mirrors/th/THCalendarDatePicker
给 App 加上一个好看又好用的日期选择器,几乎是每个 iOS 开发者都会遇到的场景。THCalendarDatePicker 是一款基于自定义日历视图的高颜值 iOS 日期选择器,它以全屏日历弹窗的形式呈现,支持横竖屏自动适配、事件标记点、多选与日期范围选择等丰富功能,通过 CocoaPods 一条命令即可安装。本文将手把手带你完成 THCalendarDatePicker 集成教程,从安装、配置到 Swift 调用全程保姆级讲解,让你 5 分钟快速集成 THCalendarDatePicker。
为什么选择 THCalendarDatePicker?iOS 日期选择器的五大亮点
相比系统自带的 UIDatePicker,THCalendarDatePicker 的优势一眼可见:
- 🗓️真正的日历视图:不是滚轮,而是按月份展示的真实日历网格,用户一眼就能看到整月日期;
- 🔄横竖屏完美适配:竖屏、横屏都自动重排布局,不会出现控件错位(见文末横屏截图);
- 🎨颜色高度可定制:选中背景色、今日高亮色、选中态文字色全部可配,轻松贴合 App 主题;
- 📌事件标记点:支持给指定日期打上"小圆点"标记,非常适合日历、日程类应用;
- 🚫灵活的日期限制:可禁用历史日期或未来日期,也可限定只能选择未来/历史 N 天。
核心控制器代码集中在 THDatePickerViewController.h,日历单元格由 THDateDay.h 实现,源码结构清晰,二次开发也毫无压力。
快速集成第一步:CocoaPods 安装 iOS 日期选择器
推荐使用 CocoaPods 安装 THCalendarDatePicker,只需在你的 Podfile 中追加一行:
Objective-C 项目:
platform :ios, '8.0' pod 'THCalendarDatePicker', '~> 1.2.9'Swift 项目:
platform :ios, '8.0' use_frameworks! pod 'THCalendarDatePicker', '~> 1.2.9'保存后执行pod install,之后打开.xcworkspace文件即可使用,整个安装过程不超过 1 分钟。
手动集成方式:免依赖直接拖入源码
如果你的项目不方便使用 CocoaPods,也可以直接 clone 仓库后将THCalendarDatePicker目录拖入工程:
git clone https://gitcode.com/gh_mirrors/th/THCalendarDatePicker⚠️ 需要注意:组件内部依赖 KNSemiModalViewController 实现半模态弹层,手动集成时需要一并添加相关文件。依赖声明可参考 THCalendarDatePicker.podspec,示例工程配置见 Podfile。
最快配置方法:几行代码弹出日期选择器
安装完成后,最快 5 分钟就能让日期选择器跑起来。核心就三步:创建实例 → 设置代理 → 弹出。
- (IBAction)touchedButton:(id)sender { THDatePickerViewController *datePicker = [THDatePickerViewController datePicker]; datePicker.date = [NSDate date]; datePicker.delegate = self; [self presentSemiViewController:datePicker withOptions:@{ KNSemiModalOptionKeys.animationDuration : @(1.0), }]; }代理回调只需实现两个方法:datePickerDonePressed:(点确认)和datePickerCancelPressed:(点取消),通过它们就能拿到最终选择的日期。完整示例代码可参考 TestViewController.m。
高颜值自定义:iOS 日期选择器的配色与样式配置
想让日期选择器和你的 App 风格统一?几个属性就能搞定:
// 选中日期的背景色(示例为绿色) [datePicker setSelectedBackgroundColor: [UIColor colorWithRed:125/255.0 green:208/255.0 blue:0/255.0 alpha:1.0]]; // 今天日期的文字颜色(示例为橙色) [datePicker setCurrentDateColor: [UIColor colorWithRed:242/255.0 green:121/255.0 blue:53/255.0 alpha:1.0]]; // 弹窗圆角 datePicker.rounded = YES;配色相关的属性声明在 THDatePickerViewController.h,界面布局则定义在 THDatePickerViewController.xib,想调整标题栏、按钮布局可以直接改 xib。
进阶玩法:事件标记、禁用历史日期与多选
THCalendarDatePicker 集成教程的精髓在于丰富的业务配置,常用玩法如下:
- 📌日期事件标记:通过
setDateHasItemsCallback:回调判断某天是否有事件,有则显示小圆点,非常适合日程提醒类 App; - 🚫禁用历史日期:
setDisableHistorySelection:YES一键禁止选择过去的日期,还有setDisableFutureSelection:控制未来日期,以及setDaysInHistorySelection:限定可选天数; - ✅选完自动关闭:
setAutoCloseOnSelectDate:YES让用户点选日期后弹窗自动收起,体验更流畅; - ✨多选与范围选择:通过
setSelectionType:可切换单选、多选或日期范围三种模式,对应THDatePickerSelectionTypeSingle / Multi / Range。
这些开关的完整说明见 THDatePickerViewController.h,每个方法都有清晰的注释,照着配置即可。
在 Swift 项目中调用 THCalendarDatePicker
Swift 项目集成同样简单,官方提供了完整的 Swift 示例工程,参考 ViewController.swift:
let datePicker = THDatePickerViewController.datePicker() datePicker.delegate = self datePicker.setAllowClearDate(false) datePicker.setClearAsToday(true) datePicker.setDisableHistorySelection(true) datePicker.selectedBackgroundColor = UIColor(red: 125/255.0, green: 208/255.0, blue: 0/255.0, alpha: 1.0) presentSemiViewController(datePicker, withOptions: [ KNSemiModalOptionKeys.animationDuration: NSNumber(value: 1.0) ])另外还有提供"起止日期"场景的 Swift 示例 ViewController.swift,做酒店预订、行程规划类功能可以直接参考。
横竖屏完美适配,无需额外处理
这是 THCalendarDatePicker 相比同类 iOS 日期选择器的明显优势:原生支持屏幕方向变化,横屏时日历会自动重新布局,开发者无需写任何适配代码。
常见问题与避坑指南
- ❓提示找不到 KNSemiModal 相关类?说明缺少依赖,请确认是否通过 CocoaPods 安装,或手动补齐依赖文件;
- ❓今天日期颜色不生效?检查是否同时设置了
currentDateColorSelected(选中态颜色),两者配合使用效果最佳; - ❓不想显示"清除日期"按钮?调用
setAllowClearDate:NO即可隐藏,也可以setClearAsToday:YES将其变成"回到今天"按钮; - ❓日期的时区不对?使用
setDateTimeZoneWithName:指定正确的时区名称,方法在 THDatePickerViewController.h 有详细说明。
总结
到这里,THCalendarDatePicker 集成教程就全部完成啦!从 CocoaPods 安装、最小代码弹出,到配色自定义、事件标记与 Swift 调用,全程只需几分钟。这款 iOS 日期选择器凭借高颜值、强适配和丰富的可配置项,非常适合日历、日程、预订类 App 快速接入。把配置代码封装成一个工厂方法,你就能在项目的任何地方一键复用这套漂亮的日历弹窗了 🚀
【免费下载链接】THCalendarDatePickerA DatePicker based on a custom calendar view项目地址: https://gitcode.com/gh_mirrors/th/THCalendarDatePicker
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考