Swift日历控件

作者: Mhhhhhhy | 来源:发表于2018-04-08 17:17 被阅读15次

记录一下项目中用到的日历控件

gif1.gif

选择日期


QQ20180408-164058-HD.gif

日历主体是3个collectionView添加到scrollView上实现展示的
CalendarModel数据源
monthDate 该月的某一天 一般为x月15日
totalDays 当前月天数
firstWeekDay标示第一天是星期几(0代表周日,1代表周一,以此类推)

通过CalendarScrollView里面的monthArray保存显示的月份数据
假设今天是2012年12月12日,那么

monthArray = [
      CalendarModel.init(11月),//前一月
      CalendarModel.init(12月),//当前月
      CalendarModel.init(1月),//下一月
      10月份的天数
]

前三个是3个collection的数据源,最后一个做前一月中再前面一个月的最后几天用来补全日历的


2F4A32B3-3E92-4A06-A452-04C5527360EB.png

有了这些数据源就能显示出左中右3个日历了
本月

//12月的数据源
let monthInfo = monthArray[1] as! CalendarModel
 // 当前日期所在月份第一天是周几
 let firstWeekDay = monthInfo.firstWeekday
 // 当前日期是所在月份的第几天
 let totalDays = monthInfo.totalDays
//显示本月日期
if indexPath.item >= 第一周开始的位置 &&  indexPath.item < 第一周开始的位置 + 该月总天数 {
      let today = indexPath.item - 第一周开始的位置 + 1//cell显示日期
}
//显示上个月日期 淡色显示 
else if indexPath.item < firstWeekday {
     let model = monthArray[0] as! CalendarModel//上一个月的数据源
     let totalDay = model.totalDays//上一个月总天数
     let today = totalDay - (firstWeekday - indexPath.item) + 1//cell显示日期
}
//显示下个月日期 淡色显示 
else {
     let today = indexPath.item - firstWeekday - totalDays + 1//cell显示日期
}

上个月和下个月在demo中
然后是滑动时的逻辑
左滑

假设 当天为 2012年12月12日 那么当前显示的日历为 11月 | 12月 | 1月
原本monthArray = [11月monthInfo, 12月monthInfo, 1月monthInfo, 10月份天数]
则滑动后monthArray = [10月monthInfo, 11月monthInfo, 12月monthInfo, 9月份天数]
且滑动完成后scrollView的contentOffSet还是要移动到中间,因为中间永远是当前月份

然后在此基础上就能实现各种各样产品老大提的恶心需求了

github:https://github.com/ywshemeng/customCalendar

相关文章

  • Swift日历控件

    记录一下项目中用到的日历控件 选择日期 日历主体是3个collectionView添加到scrollView上实现...

  • Swift 日历控件

    日历控件,使用Swift语言编写 1 页码布局 根据月份,获取每月1号的起始位置 staticpubli...

  • Swift 日历控件

    日历控件,使用Swift语言编写 页面布局 根据月份,获取每月1号的起始位置static public func ...

  • iOS 日历控件

    使用 swift 实现的日历控件,效果如图: demo:https://github.com/yuetianlu/...

  • RCalendarPicker 日历控件 ,日历选择控件,日历,

    RCalendarPicker RCalendarPicker 日历控件 ,日历选择控件,日历,日期选择 Prev...

  • iOS 日历 控件 - Obj-C & Swift

    转载请注明出处:hualei的博客www.hualeihl.com 最近用OC和Swift封装了一个日历控件,可以...

  • 日历控件

    早就有这个想法,写一下自己在iOS开发中遇到的问题,一直没闲下来,现在又要搞融云IM,索性在周五的下午撂摊子不干了...

  • Swift入门

    Swift入门教程 Swift控件教程 Swift高级篇 Swift服务端

  • Swift

    1.Swift构建自定义控件2.Swift开发集锦3.Swift构建自定义控件4.Cocoa的Swift开发专题5...

  • 日期选择器、时间选择器、单项选择器、城市地址选择器等

    项目中要用到钟表控件,就尝试了一些开源项目。 1.android自带日历/钟表控件: 个人的看法:日历/钟表控件在...

网友评论

    本文标题:Swift日历控件

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