无限循环日历(NSCalendar)

最近有人给个私活让晚上加加班吧项目做了,由于价格原因没谈妥,在加上比较忙就没有接,我看项目里面有些需求还是比较复杂的,比如日历.

我在网上随便找了找没有找到令我满意的demo,大部分小demo都没有实现 无限滚动功能 我没有立马集成git上的第三方而是自己撸一个有了自己的思路 以后有需求也好自定义. (git上确实有很多很有优秀的库但是作为一个开发者总不能啥都git上拉一个按照文档就用吧的知道原理还是比较好的)

我们看下图 先简单从一个没有做过写过日历的开发者分析一下遇见这个需求 我们的想法
1 我们看到下面这个日历界面 首先应为会想到这个界面应该collectionView吧 但是仔细一想如果是 collectionView那么无限滑动怎嘛实现呢?不可能collectionView有无数个section吧.
2 collectionView不行了,我们要解决的第一个问题就是无限循环 怎嘛无限循环呢?

其实有种方法 还是比较简单的
我们界面初始化是下面这个 样子的就是我们设置

[_scrollView setContentOffset:CGPointMake(SCREEN_WIDTH, 0) animated:NO]

向左或者向右滑动再把偏移量 设置成CGPointMake(SCREEN_WIDTH, 0) 然后改变界面上的数据就会造成无限滚动的假象,我们看到的永远是中间view上的数据.

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{

if (scrollView.contentOffset.x>SCREEN_WIDTH) { //向左滑动
    NSLog(@"+1");
}else if(scrollView.contentOffset.x

无限循环日历(NSCalendar)_第1张图片
658A3E1C-B1E8-424D-94FC-2D5D4BCE0570.png

无限循环传送门

3 说完无限循环 接下来搞界面上的数据,我们可以从后台请求当前时间(防止用户搞事情),当然也可也可以自己得到时间..我们看看我们都需要神马

1我么需要知道 当前 是xx年xx月xx天
2知道当前月一共有几天
3知道当前月的第一天是 星期几
知道这三个条件我们就可以对我们的界面 布局填充数据了.幸运的是我们都可以根据 NSCalendar 和 NSDateComponents就可以来得到你想要的条件
demo链接

无限循环日历(NSCalendar)_第2张图片
93DD79FE-A00A-4F11-8414-54B8836B4F34.png
无限循环日历(NSCalendar)_第3张图片
2017-03-08 15_40_21.gif

你可能感兴趣的:(无限循环日历(NSCalendar))