[IOS]第三方日历组件CVCalendar

网友投稿 1336 2022-09-03

[IOS]第三方日历组件CVCalendar

[IOS]第三方日历组件CVCalendar

1.简介:

一款简单好用的第三方日历开源组件.

2.安装:

参考:'CVCalendar', '~> 1.6.1'

注意,在github的介绍上分为storyboard加载和手动加载.但是经过我的试验,不知道为什么通过storyboard加载,日历部分会加载不成功.所以,这次还是采用手动加载.

就是在storyboard里面弄连个UIView,一个准备加载CVCalendarMenuView,另一个加载CVCalendarView.但是我们不在storyboard上面给两个view定义类.

在controller里:

var viewCalendarMenu: CVCalendarMenuView!var viewCalendar: CVCalendarView!

新建一个function,初始化两个Calendar类:

func initCalendar()->Void{ /* * 在页面顶端显示当前的日期 */ let currentCalendar:Calendar = Calendar.init(identifier: .gregorian) dateLabel.text = CVDate(date: Date(), calendar: currentCalendar).commonDescription /* * 初始化日历菜单 */ viewCalendarMenu = CVCalendarMenuView(frame: CGRect(x:menuView.bounds.origin.x,y:menuView.bounds.origin.y, width:menuView.bounds.size.width, height:menuView.bounds.size.height)) /* * 初始化日历 */ viewCalendar = CVCalendarView(frame: CGRect(x:calendarView.bounds.origin.x, y:calendarView.bounds.origin.y, width:calendarView.bounds.size.width, height:calendarView.bounds.size.height)) /* * 为日历菜单注册代理 */ viewCalendarMenu.menuViewDelegate = self /* * 为日历注册代理 */ viewCalendar.calendarDelegate = self /* * 将日历组件放在界面上 */ menuView.addSubview(viewCalendarMenu) calendarView.addSubview(viewCalendar) }

还有必须要加入:

override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() viewCalendarMenu.commitMenuViewUpdate() viewCalendar.commitCalendarViewUpdate() }

最后继承delegate:

extension BookDateViewController: CVCalendarViewDelegate,CVCalendarMenuViewDelegate{ func presentationMode() -> CalendarMode { return .monthView } func firstWeekday() -> Weekday { return .monday } func presentedDateUpdated(_ date: CVDate) { //导航栏显示当前日历的年月 dateLabel.text = date.globalDescription } //每个日期上面是否添加横线(连在一起就形成每行的分隔线) func topMarker(shouldDisplayOnDayView dayView: CVCalendarDayView) -> Bool { return true } func dotMarker(shouldShowOnDayView dayView: DayView) -> Bool { if !dayView.isHidden && dayView.date != nil { //获取该日期视图的年月日 let year = dayView.date.year let month = dayView.date.month let day = dayView.date.day let calendar = NSCalendar.current var comps: DateComponents = DateComponents() comps = calendar.dateComponents([.year,.month,.day], from: Date()) //判断日期是否符合要求 if year == comps.year && month == comps.month && day == comps.day { return true } } return false } func dotMarker(colorOnDayView dayView: DayView) -> [UIColor] { return [UIColor.lightGray] } func dotMarker(moveOffsetOnDayView dayView: DayView) -> CGFloat { return 10 } //日期选择响应 func didSelectDayView(_ dayView: CVCalendarDayView, animationDidFinish: Bool) { //获取日期 let date = dayView.date.convertedDate()! // 创建一个日期格式器 let dformatter = DateFormatter() dformatter.dateFormat = "yyyy年MM月dd日" let message = "当前选择的日期是:\(dformatter.string(from: date))" //将选择的日期弹出显示 let alertController = UIAlertController(title: "", message: message,preferredStyle: .alert) let okAction = UIAlertAction(title: "确定", style: .cancel, handler: nil) alertController.addAction(okAction) self.present(alertController, animated: true, completion: nil) } }

有些再深入一些的UI修改可能就需要修改源码了,例如分割线的颜色,灰点的初始位置等等,API都没给出接口.

一些用法可以参考:http://hangge.com/blog/cache/detail_1504.html

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:PHP与redis队列实现电商订单自动确认收货
下一篇:[React Native]入口以及AppRegistry问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~