1.简介:
一款简单好用的第三方日历开源组件.
2.安装:
参考:https://github.com/CVCalendar/CVCalendar
根据上一篇博文,使用cocoaPod安装:
pod '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) } }
可以看到delegate里面就有calendar类的各种API可以调用.可以自定义分割线,灰点,点击事件等等.
有些再深入一些的UI修改可能就需要修改源码了,例如分割线的颜色,灰点的初始位置等等,API都没给出接口.
一些用法可以参考:http://www.hangge.com/blog/cache/detail_1504.html
相关推荐
CVCalendar,是一款 iOS 端的可以自定义视觉的日历应用,采用 Swift 编写。运行截图:开发环境要求:Xcode 7Swift 2.0 标签:CVCalendar
总的来说,CVCalendar是一款针对iOS开发者的强大日历组件,它不仅提供了丰富的自定义选项,而且兼容Swift 2.0,使得开发者能够轻松地在项目中集成和扩展日历功能。对于那些需要处理日期和时间,特别是需要创建独特...
总览屏幕截图GIF演示安装可可豆pod 'CVCalendar' , '~> 1.7.0'用法使用CVCalendar一点都不困难。 在您的项目中有两种实际的实现方法: 故事板设置手动设定因此,让我们开始吧。 警告! 由于1.1.1版CVCalendar需要...
【自定义可视日历】是iOS应用开发中的一个...总之,CVCalendar是一个强大的工具,可以帮助开发者构建美观且功能丰富的自定义日历组件。通过学习和利用这个库,你可以为你的iOS应用增添个性化的日历功能,提升用户体验。
38 -设备部经理绩效考核表1
在做了充分的需求分析之后,将一站式电脑配件交易平台的需求分为商品管理、订单管理、配送管理、组装管理和评论管理等多个子模块,随后对系统进行设计,设计主要从系统整体架构和数据库两方面进行分析和设计,系统的核心功能主要包括商品管理、订单管理、配送管理、组装管理和评论管理,而非核心功能主要包含了用户管理和用户登录管理等模块。而后,对系统进行了编码并实现了所有功能,最后,对系统相关功能展开测试,并通过了系统测试,充分验证了系统可用性。
数据名称:2000-2022年各县市区主要社会经济发展指标面板数据 数据类型:dta格式 数据来源:中国县域统计
内容概要:本文提供了针对大学生英语竞赛写作准备的重要资源——一系列通用的英文句子模板。这些模板涵盖了现代经济社会的各种话题,从科技进步到环境保护,以及个人品质和社会责任等,并且适用于论述类文章、观点对比和个人见解的表达。文章通过对每一句话的应用环境解释和语法提示,确保使用者可以在实际写作中正确且有效地应用这些表达方式。 适合人群:正在准备参加大学生英语竞赛的学生及其他希望提高书面表达能力的学习者。 使用场景及目标:考生能够在竞赛时间内迅速构建思路完整的文章,增强语言表达的流利性和规范性;帮助学习者积累高级词汇,提升英语写作水平并培养良好的思维逻辑。 阅读建议:结合历年优秀范文进行深入学习,熟悉不同类型话题下的表述方法;练习将提供的句子融入自身创作的文章中,通过不断修订和完善来巩固记忆。同时也可以用于日常的英语写作训练当中。
本代码参考网络大神代码以及结合自身理解,编写的关于使用STM32F103C8T6芯片,通过ESP8266模块,连接阿里云物联网平台的代码历程,文件内包含了如何修改代码连接自己的设备的教程(readme.txt)文件,请读者仔细阅读。
宽带折叠传输阵天线.pdf
这是一个exe程序,解压后可以批量将Word文件转为PDF文件。
09 -单证部经理绩效考核表1
2009-2022年农村金融发展水平省级面板数据 31省份金融发展水平数据(不含港澳台地区) 涉农贷款金额亿元/第一产业增加值 30省份第一产业产值(2009-2022年) 30省份农业金融发展水平(2009-2022年)
2022年9月全国大学生英语竞赛A类初赛参考答案
Python源码03之解决对图片格式进行批量转换的问题.zip
病毒
基于向量特征的车辆轨迹预测.pdf
10-15-物控人员绩效考核表(自动计算、等级评价、任意设置)
员工末位淘汰考评表
1、操作简单,导入(待分班的数据xlsx格式),分班、导出三步。 2、分班条件设置:可选科类组合,设置起始班级和学生预设班级。 3、分班结果:班级人数均衡、男女均衡,各科成绩和总分班级均衡,最大分差不超过0.5分。 4、导出xlsx格式的分班结果。含各班单独的工作表和统计数据表。