由于我开发的ERP系统项目中需要自己写个签到日历,所以我也花了点时间研究了日历,我写的这个日历满足了ERP系统的需求,另外写了一个简单的Demo,愿和大家一起走向大神道路。
先上图看看项目日历截图吧!今天是2015-12-19(红色数字代表今天时间), 下个月是2016-01.就发两张截图吧。学完日历里之后,下面再教大家一个算法!
一: 界面搭建
1.上面提供的效果图,现在开始动手写代码. 来新建一个工程,取名为“FUWUCalenderDemo”
2.新建完工程。我们需要考虑,写一个日历需要哪些思路。先想想实现日历的控件。左边是点击上一个月,这是个button; 中间是显示日期的,这是个label;右边是点击下一个月的,这是个button。下面是放日历的时间,我们用collectionView来实现,自定义collectionViewCelll。
3.先把布局的代码贴上。控件都用!声明,代表这个控件不能为空,必须是前面的类型.
纯代码添加控件的代码有点长哈,坚持住,你写完这些,然后你会发现写个日历很简单的。
4. 写完添加控件的代码,显示的效果,如图下: 是不是很像日历的造型了,我们只要做下时间的处理的,把时间传进去就可以了。
二:数据传入(二里的内容比较重要,也是日历实现的重点)
注: date: 表示传入的时间是当前时间. 比如今天是2015/12/19
1.算出当前月份的第几号(今天19号)
2. 算出当前是第几月份(当前12月份)
3. 算出当前的年份(当前年份是2015年)
4.算出每个月份的1号对应的星期几(这个月1号对应星期二)
5.算出当前月份的天数
6. 算出上个月
7.算出下个月
这些问题是实现日历需要的问题,罗列出来之后,我们一个问题一个问题的把他解决,最后解决了,我们可以自己写个日历了O(∩_∩)O~。。
看图解释:
三: 界面和数据都准备好,现在只需要把数据和界面联系起来,所有写的日历很快就完成了哈~~加油!!
1.接下来,我们先声明两个时间属性,一个今天的时间(显示生活的时间), 一个是系统的时间(系统的时间).
2.再接下来。我们在collection的内容显示方法里把数据和界面显示联系起来 :func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
3. 操作完第二步后,显示出来的效果如图:
是不是很明显的看到2015/12/19,这个月1号对应星期二,这个月有31天。哦哦。。标题日期还没显示出来了,当前时间还没显示呢,不要紧,我们只要添加一行代码就行了。看效果图:
4.点击上一个月和下一月的事件代码:
5.对于31号后面的空位不需要的,可以把第二列返回值的42修改为返回的当天数,当然这里需要算法计算。这个算法很简单的,看图计算当前月份的总天数
6. 执行完第五步的效果图:
7. 做一下自定义cell的优化。这个工程不修改了,直接拉线的。项目的cell优化代码上图,其实是懒加载哈!!
四:恭喜你们又学会了新的知识点,其实很简单,但是一开始我们不懂,没有思维,不过坚持下来了,原来不管多难的东西就变的很简单很简单~~~
想要demo的请留言,邮箱。提前祝大家新年快乐O(∩_∩)O~