最近有人給個私活讓晚上加加班吧項目做了,由于價格原因沒談妥,在加上比較忙就沒有接,我看項目里面有些需求還是比較復雜的,比如日歷.
我在網上隨便找了找沒有找到令我滿意的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