无限循环日历(NSCalendar)

作者: 大墙66370 | 来源:发表于2017-03-08 17:25 被阅读335次

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

    我在网上随便找了找没有找到令我满意的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<SCREEN_WIDTH){ //向右滑动
        NSLog(@"-1"); 
     } 
     [_scrollView setContentOffset:CGPointMake(SCREEN_WIDTH, 0) animated:NO];   
    }
    
    658A3E1C-B1E8-424D-94FC-2D5D4BCE0570.png
    无限循环传送门

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

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

    93DD79FE-A00A-4F11-8414-54B8836B4F34.png 2017-03-08 15_40_21.gif

    相关文章

      网友评论

        本文标题:无限循环日历(NSCalendar)

        本文链接:https://www.haomeiwen.com/subject/idbbgttx.html