Swift中FSCalendar周视图点击带数据日期自动展开为月视图问题求助
FSCalendar固定为周视图的解决方法
- 第一步:关闭视图切换权限
实现FSCalendarDelegate中的shouldChangeScope代理方法,直接返回false,禁止日历在周视图和月视图之间切换:
func calendar(_ calendar: FSCalendar, shouldChange scope: FSCalendarScope) -> Bool { return false }
同时关闭触发视图切换的手势,避免滑动或者点击触发切换:
// 初始化时直接配置 calendar.scope = .week // 默认固定为周视图 calendar.isScopeGestureEnabled = false // 禁用切换视图的手势
- 第二步:固定日历高度,删除自动调整高度的逻辑
删掉你之前写的boundingRectWillChange代理方法里的动态改高度的代码,直接给FSCalendar添加固定高度约束,周视图的推荐固定高度为80~90pt,根据你的UI需求调整即可,不要让高度随视图切换变化:
// 示例:用SnapKit添加固定高度约束 calendar.snp.makeConstraints { make in make.top.left.right.equalToSuperview() make.height.equalTo(85) // 固定周视图高度 }
如果是用Storyboard/Xib,直接给日历控件添加高度约束写死数值即可。
- 第三步:额外检查项
如果配置完还是会切换到月视图,检查是否有其他代码在点击日期的回调didSelect date中手动修改了calendar.scope属性,删掉对应修改scope的代码即可。
内容的提问来源于stack exchange,提问作者Karl Mcgeough
相关产品推荐
相关产品推荐

