無(wú)限循環(huán)日歷(NSCalendar)

最近有人給個(gè)私活讓晚上加加班吧項(xiàng)目做了,由于價(jià)格原因沒(méi)談妥,在加上比較忙就沒(méi)有接,我看項(xiàng)目里面有些需求還是比較復(fù)雜的,比如日歷.

我在網(wǎng)上隨便找了找沒(méi)有找到令我滿(mǎn)意的demo,大部分小demo都沒(méi)有實(shí)現(xiàn) 無(wú)限滾動(dòng)功能 我沒(méi)有立馬集成git上的第三方而是自己擼一個(gè)有了自己的思路 以后有需求也好自定義. (git上確實(shí)有很多很有優(yōu)秀的庫(kù)但是作為一個(gè)開(kāi)發(fā)者總不能啥都git上拉一個(gè)按照文檔就用吧的知道原理還是比較好的)

我們看下圖 先簡(jiǎn)單從一個(gè)沒(méi)有做過(guò)寫(xiě)過(guò)日歷的開(kāi)發(fā)者分析一下遇見(jiàn)這個(gè)需求 我們的想法
1 我們看到下面這個(gè)日歷界面 首先應(yīng)為會(huì)想到這個(gè)界面應(yīng)該collectionView吧 但是仔細(xì)一想如果是 collectionView那么無(wú)限滑動(dòng)怎嘛實(shí)現(xiàn)呢?不可能collectionView有無(wú)數(shù)個(gè)section吧.
2 collectionView不行了,我們要解決的第一個(gè)問(wèn)題就是無(wú)限循環(huán) 怎嘛無(wú)限循環(huán)呢?

其實(shí)有種方法 還是比較簡(jiǎn)單的
我們界面初始化是下面這個(gè) 樣子的就是我們?cè)O(shè)置

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

向左或者向右滑動(dòng)再把偏移量 設(shè)置成CGPointMake(SCREEN_WIDTH, 0) 然后改變界面上的數(shù)據(jù)就會(huì)造成無(wú)限滾動(dòng)的假象,我們看到的永遠(yuǎn)是中間view上的數(shù)據(jù).

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

if (scrollView.contentOffset.x>SCREEN_WIDTH) { //向左滑動(dòng)
    NSLog(@"+1");
}else if(scrollView.contentOffset.x<SCREEN_WIDTH){ //向右滑動(dòng)
    NSLog(@"-1"); 
 } 
 [_scrollView setContentOffset:CGPointMake(SCREEN_WIDTH, 0) animated:NO];   
}

658A3E1C-B1E8-424D-94FC-2D5D4BCE0570.png

無(wú)限循環(huán)傳送門(mén)

3 說(shuō)完無(wú)限循環(huán) 接下來(lái)搞界面上的數(shù)據(jù),我們可以從后臺(tái)請(qǐng)求當(dāng)前時(shí)間(防止用戶(hù)搞事情),當(dāng)然也可也可以自己得到時(shí)間..我們看看我們都需要神馬

1我么需要知道 當(dāng)前 是xx年xx月xx天
2知道當(dāng)前月一共有幾天
3知道當(dāng)前月的第一天是 星期幾
知道這三個(gè)條件我們就可以對(duì)我們的界面 布局填充數(shù)據(jù)了.幸運(yùn)的是我們都可以根據(jù) NSCalendar 和 NSDateComponents就可以來(lái)得到你想要的條件
demo鏈接

93DD79FE-A00A-4F11-8414-54B8836B4F34.png
2017-03-08 15_40_21.gif
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容