FSCalendar核心属性全解:scope、firstWeekday、placeholderType一张清单搞定

发布时间:2026/9/19 22:50:34
FSCalendar核心属性全解:scope、firstWeekday、placeholderType一张清单搞定 FSCalendar核心属性全解scope、firstWeekday、placeholderType一张清单搞定【免费下载链接】FSCalendarA fully customizable iOS calendar library, compatible with Objective-C and Swift项目地址: https://gitcode.com/gh_mirrors/fs/FSCalendarFSCalendar 是一款开源的 iOS 日历控件支持 Objective-C 与 Swift可定制性极高。想要把日历调成自己想要的样子关键是理解它的核心属性scope控制月视图/周视图切换firstWeekday决定一周从周几开始placeholderType决定跨月占位格子的显示方式。本文用一张清单把这些高频属性一次讲透新手也能快速上手。FSCalendar 属性清单先看清全貌FSCalendar 的所有对外属性都声明在主头文件中配合外观对象 FSCalendarAppearance 控制颜色与字体。建议先看 FSCalendar.h 中Primary段落声明的属性这就是全部核心属性清单的入口。属性默认值一句话作用scope月视图切换月视图 / 周视图firstWeekday1周日设置每周第一天placeholderType填满 6 行跨月占位日显示方式scrollDirection横向翻页滚动方向headerHeight自动月份头高度0即隐藏weekdayHeight自动星期头高度allowsSelectionYES是否允许点选日期pagingEnabledYES是否分页滚动scrollEnabledYES是否允许滚动rowHeight自动关闭分页后的行高locale/timeZone系统当前本地化与及时区提示以上默认值可以在 FSCalendar.m 的初始化逻辑中核对例如firstWeekday 1、scope默认月视图、placeholderType默认填满六行。scope 属性月视图与周视图如何切换scope的取值定义在 FSCalendar.hFSCalendarScopeMonth月视图每页一个月FSCalendarScopeWeek周视图每页一周。切换有两种方式直接赋值属性见 scope 属性声明调用带动画的方法平滑过渡[calendar setScope:FSCalendarScopeWeek animated:YES];对应方法说明见 FSCalendar.h。小技巧还可以给日历添加一个滑动手势来切换视图把UIPanGestureRecognizer的 action 指向handleScopeGesture:即可参考示例 FSCalendarScopeExampleViewController.m 与 handleScopeGesture: 声明。firstWeekday 属性一周从周几开始显示firstWeekday的取值与NSCalendar保持一致1表示周日2表示周一依此类推。属性声明见 FSCalendar.h。calendar.firstWeekday 2; // 让周一排在第一列这是做国际化 App 时最常用的属性之一欧美习惯周日起始国内用户更习惯周一起始改一个数字就能适配。注意它影响的是整张日历的列排布修改后建议调用reloadData刷新。placeholderType 属性跨月占位格的三种模式月视图里上月/下月的日期会以占位格形式补齐。placeholderType控制这些占位格如何显示三种取值定义在 FSCalendar.h取值效果FSCalendarPlaceholderTypeNone完全不显示占位日格子留空FSCalendarPlaceholderTypeFillHeadTail仅首尾补满当月的周FSCalendarPlaceholderTypeFillSixRows补满 6 行默认calendar.placeholderType FSCalendarPlaceholderTypeNone;经验之谈默认填满 6 行保证所有月份高度一致视觉最稳定如果希望不同月份的日历高度自然变化例如某月只占 4 行就选None或FillHeadTail。周视图示例 FSCalendarScopeExampleViewController.m 就是None 周视图的组合用法。容易踩的坑切换 scope 后高度必须手动更新FSCalendar不会自己改 frame切换scope、关闭分页、修改placeholderType时日历自身高度都会变化。必须在委托方法里更新约束或 frame否则会出现布局错乱- (void)calendar:(FSCalendar *)calendar boundingRectWillChange:(CGRect)bounds animated:(BOOL)animated { self.calendarHeightConstraint.constant CGRectGetHeight(bounds); [self.view layoutIfNeeded]; }方法说明见 FSCalendarDelegate。这是新手集成时反馈最多的问题务必在boundingRectWillChange:里同步高度约束。更多属性去哪看外观与颜色FSCalendarAppearance 负责字体、颜色、圆角等全局样式逐日定制则实现 FSCalendarDelegateAppearance 协议方法。数据源FSCalendarDataSource 提供事件点、副标题、最大/最小日期等。更多组合玩法范围选择、全屏、隐藏占位格等可参考 MOREUSAGE.md 与 Example-Objc、Example-Swift 中的示例工程HidePlaceholderViewController与FSCalendarScopeExampleViewController正是本文三个属性的完整演示。把scope、firstWeekday、placeholderType三个属性记牢再配合外观对象调整配色基本能覆盖日常 90% 的日历定制需求。【免费下载链接】FSCalendarA fully customizable iOS calendar library, compatible with Objective-C and Swift项目地址: https://gitcode.com/gh_mirrors/fs/FSCalendar创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考