You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:24:01