FSCalendar在分配视图内未完整显示全部日期,需滚动才可查看周六

解决方案
你可以通过以下两种方式解决FSCalendar日期列截断的问题:
1. Storyboard可视化配置(无需写代码)
- 选中你添加的FSCalendar控件,在「Size Inspector」中调整控件左右约束,保证其宽度适配当前父视图,预留足够的空间容纳7列日期
- 切换到「Attributes Inspector」,在Appearance分类下调整
Weekday Text Size,适当缩小周标题字号避免挤压日期列宽度 - 同样在Appearance分类下找到
Item Size选项,关闭自动计算后设置固定值,计算规则为:FSCalendar总宽度 ÷ 7 - 列间距总和,例如375宽度的控件可以设置为51,刚好适配7列
2. 代码配置(灵活适配多场景)
在关联了FSCalendar的ViewController的对应生命周期方法中添加以下代码即可:
Objective-C 版本
- (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; // 实时计算item size适配宽度变化 CGFloat itemWidth = (CGRectGetWidth(self.calendar.frame) - 6) / 7; self.calendar.appearance.itemSize = CGSizeMake(itemWidth, itemWidth); // 缩小周标题字号,可根据需求调整 self.calendar.appearance.weekdayTextSize = 12; // 隐藏占位日期,可选配置 self.calendar.placeholderType = FSCalendarPlaceholderNone; }
Swift 版本
override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() let itemWidth = (calendar.frame.width - 6) / 7 calendar.appearance.itemSize = CGSize(width: itemWidth, height: itemWidth) calendar.appearance.weekdayTextSize = 12 calendar.placeholderType = .none }
注:放在
viewDidLayoutSubviews中计算可以自动适配横竖屏切换、不同尺寸设备的宽度变化,避免再次出现截断问题。
内容的提问来源于stack exchange,提问作者Meo Flute
相关产品推荐
相关产品推荐

