【问题标题】:Show only dates in the mentioned range for the month using FSCalendar使用 FSCalendar 仅显示该月提及范围内的日期
【发布时间】:2020-09-07 18:07:58
【问题描述】:

我正在使用FSCalendar。除了以下几点,我什么都能做到:

1) 我想删除不在日历范围内的集合视图的日期。例如。我的日历日期范围从当前日期到当前日期过去 30 天。在今天的场景中,从 4 月 20 日到 5 月 21 日。因此,我不想显示从 4 月 1 日到 19 日以及从 22 日到 5 月底的日期。写在库中的逻辑对我来说有点复杂。

我已经分享了代码的 GitHub 链接以供查看并可能对我有所帮助。我没有共享我的任何代码,因为它不是需要更改单个文件,它包含多个文件,这就是我共享库存储库链接的原因。任何帮助将不胜感激。

【问题讨论】:

  • 链接访问您的项目?
  • @King.lbt:我添加的链接是针对我正在使用的库的,如果您下载该链接,您肯定会知道我在寻找什么。我无法将我的项目的链接共享为私有链接,也没有共享任何代码,因为它不是我可以共享的单个文件代码以显示我尝试过的所有内容。
  • 我曾经实现过这个框架。我知道您希望当天始终是 UI 的第一天,对吗?
  • 由于我的日历范围是从当前日期到过去 30 天,所以我的日历的第一个日期应该是过去 30 日。但我猜你得到了我想要的。
  • 如果这有助于理解我的要求:我的日历日期范围从当前日期到当前日期过去 30 天。在今天的情况下,从 4 月 20 日到 5 月 21 日。所以,我不想显示从 4 月 1 日到 19 日以及 22 日到 5 月底的日期。

标签: ios objective-c swift calendar fscalendar


【解决方案1】:

在探索了 FSCalendar 中代码的更多细节之后,我认为您可以做到。但这意味着您必须对库进行一些更改。 先在FSCalendarExtension,

- (nullable NSDate *)fs_firstDayOfMonth:(NSDate *)month
{
    if (!month) return nil;
    NSDateComponents *components = [self components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour fromDate:month];
    components.day = today;
    return [self dateFromComponents:components];
}

这将获得该月的第一天,您必须将其设置回当前日期。以及修改了以下所有功能:

- (nullable NSDate *)fs_firstDayOfWeek:(NSDate *)week
- (nullable NSDate *)fs_lastDayOfWeek:(NSDate *)week
- (NSInteger)fs_numberOfDaysInMonth:(NSDate *)month

我的意思是有很多变化。而且您必须更改库的代码,对您来说更好的方法是创建自己的日历。会更好。

【讨论】:

  • 非常感谢您抽出时间查看我的问题并找到解决方案。我终于以某种方式使用相同的 FSCalendar 使它工作:P。它要求我编写我的方法,然后实现它。感谢您的努力,伙计:)我可能会尽快添加我所做的所有更改的答案。
  • 如果有人想要同样的结果并看到这个,请告诉我,我也许可以帮助他们。
【解决方案2】:

基于 FSCalendar,您可以显示一个月或一周。因为它们有常规的 :unit。 如果您想显示不受管制的日子,您可以创建自定义功能。 但我建议你使用 FSCalendar。够了。

【讨论】:

  • 感谢您的努力,我知道我想使用 FSCalendar 但我无法解决我提出的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多