
THCalendarDatePicker 事件标记功能详解为日历日期添加小红点日程提示【免费下载链接】THCalendarDatePickerA DatePicker based on a custom calendar view项目地址: https://gitcode.com/gh_mirrors/th/THCalendarDatePickerTHCalendarDatePicker 是一款基于自定义日历视图的 iOS 日期选择器开源组件它的事件标记功能允许开发者为日历上的任意日期添加小红点日程提示让用户打开日历就能一眼看出哪些天有安排、有提醒或有事件。本文将从原理到实战完整讲解这个日历小红点功能的配置方法与使用技巧帮你用最少的代码为自己的 App 打造出带日程提示的专业日历选择器。THCalendarDatePicker 是什么自带事件标记能力的日历日期选择器THCalendarDatePicker 是一个高度可定制的 iOS 日历日期选择器以半模态弹窗形式展示支持️ 年月快速切换、滑动翻页✅ 日期单选、多选与区间选择 选中背景色、当前日期颜色完全可配事件标记为指定日期添加小红点提示当天存在日程或事件正是最后这个小红点能力让它特别适合日程管理类、提醒类、打卡类 App——用户不需要点进每一天扫一眼日历就知道哪些日子有内容。事件标记的实现原理小红点从哪里来要灵活使用这个功能先理解它的内部机制。在 THCalendarDatePicker 中每个日期格子都是一个THDateDay视图其内部有一个专门的小红点图片控件hasItemsIndicator定义见 THDateDay.h。小红点图标取自资源目录中的calendar_littledot图片Media.xcassets/calendar_littledot.imageset分普通与禁用两种状态视图通过indicateDayHasItems:方法控制圆点的显示与隐藏见 THDateDay.m每当日历重新绘制日期格子时控件会向你的回调询问这一天有没有事件返回YES就点亮小红点逻辑见 THDatePickerViewController.m。也就是说你不需要手动操作任何视图只需要提供一个判断函数小红点就会自动出现在对应日期上。三步开启日期小红点事件标记配置方法第一步安装组件推荐使用 CocoaPods 安装在 Podfile 中加入platform :ios, 8.0 pod THCalendarDatePicker, ~ 1.2.9如果希望手动集成也可以克隆仓库后把THCalendarDatePicker目录整体拖入工程git clone https://gitcode.com/gh_mirrors/th/THCalendarDatePicker第二步设置事件标记回调这是整个功能的核心配置。调用setDateHasItemsCallback:传入一个接收日期、返回布尔值的 Block 即可接口声明见 THDatePickerViewController.h。以 Objective-C 为例[self.datePicker setDateHasItemsCallback:^BOOL(NSDate *date) { // 这里替换成你自己的业务判断该日期是否有日程/事件 return [self eventExistsOnDate:date]; }];Swift 写法同样简洁参考官方示例 ViewController.swiftdatePicker.setDateHasItemsCallback { (date: Date?) - Bool in // 返回 true 的日期会显示小红点 return self.eventExists(on: date) }回调里的date就是日历上正在绘制的每一天你可以在这里查数据库、查接口缓存或做任何本地判断——判断逻辑完全由你掌控。第三步弹出日历查看效果配置完成后像正常使用日期选择器一样弹出即可小红点会自动渲染到对应日期格下方[self presentSemiViewController:self.datePicker withOptions:{ KNSemiModalOptionKeys.animationDuration : (1.0), KNSemiModalOptionKeys.shadowOpacity : (0.3), }];数据变化后如何刷新小红点redraw 更新技巧一个常见场景是用户在弹出的日历里完成了某个操作比如新增了一条日程小红点需要立即更新。此时只需调用控件提供的redraw方法重新绘制日历圆点指示器就会按最新的回调结果重新计算方法说明见 THDatePickerViewController.h[self.datePicker redraw];日历在viewWillAppear时也会自动执行一次redraw所以你每次打开日历看到的小红点都是最新状态无需额外处理。让日历更好用的配套功能设置事件标记常与以下功能搭配使用效果更佳日期范围限制setDateRangeFrom:toDate:限定可选区间或通过setDaysInHistorySelection:、setDaysInFutureSelection:控制可选天数禁用选择setDisableHistorySelection:与setDisableFutureSelection:禁止选择过去/未来日期视觉定制selectedBackgroundColor、currentDateColor等属性可调整选中态与今天的颜色与小红点互不干扰选择模式setSelectionType:支持单选、多选与区间选择满足日程规划场景。这些配置的完整用法可参考工程中的 TestViewController.m 示例代码。常见问题与避坑指南❓回调被频繁调用这是正常现象——日历绘制每一天都会调用一次回调请保证判断逻辑足够轻量避免在回调里做耗时操作如同步网络请求❓小红点颜色不是红色组件内置的小红点是一张浅色圆点图片你也可以替换calendar_littledot.imageset中的图片资源或自定义hasItemsIndicator的图片改成品牌色或任意样式❓切换月份后小红点不显示确认回调已通过setDateHasItemsCallback:设置且页面显示时调用了redraw刷新❓今天和选中日的颜色干扰小红点颜色定制只作用于日期数字与背景不会遮挡日期格下方的圆点指示器可放心搭配。总结用小红点提升日历的信息密度THCalendarDatePicker 的事件标记功能用一个简单的回调方法就实现了日历 日程提示的完整交互日期格子下方的小红点让用户无需点击即可感知当天是否有安排配合redraw动态刷新与丰富的配套设置非常适合集成到日程管理、提醒、预约等场景的 iOS 应用中。现在就去 clone 项目跑一跑示例把属于你的小红点点亮起来吧【免费下载链接】THCalendarDatePickerA DatePicker based on a custom calendar view项目地址: https://gitcode.com/gh_mirrors/th/THCalendarDatePicker创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考