Swift - 第三方日历组件CVCalendar使用详解1(配置、基本用法)

82 篇文章 1 订阅
CVCalendar  是一款超好用的第三方日历组件,不仅功能强大,而且可以方便地进行样式自定义。同时, CVCalendar  还提供月视图、周视图两种展示模式,我们可以根据需求自由选择使用。

一、安装配置

(1)从  GitHub  上下载最新的代码: https://github.com/Mozharovsky/CVCalendar
(2)将下载下来的源码包中  CVCalendar.xcodeproj  拖拽至你的工程中 
原文:Swift - 第三方日历组件CVCalendar使用详解1(配置、基本用法)

(3) 工程 ->  General ->  Embedded Binaries 项,把  iOS 版的  framework 添加进来: CVCalendar.framework
原文:Swift - 第三方日历组件CVCalendar使用详解1(配置、基本用法)

(4)最后,在需要使用  CVCalendar 的地方  import 进来就可以了
1
import  CVCalendar

二、基本用法

1,月视图使用样例 

(1)效果图
  • 初始化的时候自动显示当月日历,且“今天”的日期文字是红色的。
  • 顶部导航栏标题显示当前日历的年、月信息,日历左右滑动切换的时候,标题内容也会随之改变。
  • 点击导航栏右侧的“今天”按钮,日历又会跳回到当前日期。
  • 点击日历上的任一日期时间后,该日期背景色会变蓝色(如果是今天则变红色)。同时我们在日期选择响应中,将选择的日期弹出显示。
    原文:Swift - 第三方日历组件CVCalendar使用详解1(配置、基本用法)     原文:Swift - 第三方日历组件CVCalendar使用详解1(配置、基本用法)     原文:Swift - 第三方日历组件CVCalendar使用详解1(配置、基本用法)

(2)样例代码
  • 日历组件分为:CVCalendarMenuView 和 CVCalendarView 两部分。前者是显示星期的菜单栏,后者是日期表格视图。这二者的位置和大小我们可以随意调整设置。
  • 组件提供了许多代理协议让我进行样式调整或功能响应,我们可以选择使用。但其中 CVCalendarViewDelegateCVCalendarMenuViewDelegate 这两个协议是必须的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import  UIKit
import  CVCalendar
 
class  ViewController UIViewController  {
     //星期菜单栏
     private  var  menuView:  CVCalendarMenuView !
     
     //日历主视图
     private  var  calendarView:  CVCalendarView !
     
     var  currentCalendar:  Calendar !
     
     override  func  viewDidLoad() {
         super .viewDidLoad()
         
         currentCalendar =  Calendar . init (identifier: .gregorian)
         
         //初始化的时候导航栏显示当年当月
         self .title =  CVDate (date:  Date (), calendar: currentCalendar).globalDescription
         
         //初始化星期菜单栏
         self .menuView =  CVCalendarMenuView (frame:  CGRect (x:0, y:80, width:300, height:15))
         
         //初始化日历主视图
         self .calendarView =  CVCalendarView (frame:  CGRect (x:0, y:110, width:300,
                                                          height:450))
         
         //星期菜单栏代理
         self .menuView.menuViewDelegate =  self
         
         //日历代理
         self .calendarView.calendarDelegate =  self
         
         //将菜单视图和日历视图添加到主视图上
         self .view.addSubview(menuView)
         self .view.addSubview(calendarView)
     }
     
     //今天按钮点击
     @IBAction  func  todayButtonTapped(_ sender:  AnyObject ) {
         let  today =  Date ()
         self .calendarView.toggleViewWithDate(today)
     }
     
     override  func  viewDidLayoutSubviews() {
         super .viewDidLayoutSubviews()
         
         //更新日历frame
         self .menuView.commitMenuViewUpdate()
         self .calendarView.commitCalendarViewUpdate()
     }
     
     override  func  didReceiveMemoryWarning() {
         super .didReceiveMemoryWarning()
     }
}
 
extension  ViewController CVCalendarViewDelegate , CVCalendarMenuViewDelegate  {
     //视图模式
     func  presentationMode() ->  CalendarMode  {
         //使用月视图
         return  .monthView
     }
     
     //每周的第一天
     func  firstWeekday() ->  Weekday  {
         //从星期一开始
         return  .monday
     }
     
     func  presentedDateUpdated(_ date:  CVDate ) {
         //导航栏显示当前日历的年月
         self .title = date.globalDescription
     }
     
     //每个日期上面是否添加横线(连在一起就形成每行的分隔线)
     func  topMarker(shouldDisplayOnDayView dayView:  CVCalendarDayView ) ->  Bool  {
         return  true
     }
     
     //切换月的时候日历是否自动选择某一天(本月为今天,其它月为第一天)
     func  shouldAutoSelectDayOnMonthChange() ->  Bool  {
         return  false
     }
     
     //日期选择响应
     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 )
     }
}
源码下载 hangge_1504.zip

2,周视图使用样例

同月视图模式相比,周视图日历区域只有一行(每次显示7天日期)。其它方面和月视图相比差别不大,也都是左右滑动切换显示下一周、下一周日期。
原文:Swift - 第三方日历组件CVCalendar使用详解1(配置、基本用法)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import  UIKit
import  CVCalendar
 
class  ViewController UIViewController  {
     //星期菜单栏
     private  var  menuView:  CVCalendarMenuView !
     
     //日历主视图
     private  var  calendarView:  CVCalendarView !
     
     var  currentCalendar:  Calendar !
     
     override  func  viewDidLoad() {
         super .viewDidLoad()
         
         currentCalendar =  Calendar . init (identifier: .gregorian)
         
         //初始化的时候导航栏显示当年当月
         self .title =  CVDate (date:  Date (), calendar: currentCalendar).globalDescription
         
         //初始化星期菜单栏
         self .menuView =  CVCalendarMenuView (frame:  CGRect (x:0, y:80, width:300, height:15))
         
         //初始化日历主视图
         self .calendarView =  CVCalendarView (frame:  CGRect (x:0, y:110, width:300,
                                                          height:50))
         
         //星期菜单栏代理
         self .menuView.menuViewDelegate =  self
         
         //日历代理
         self .calendarView.calendarDelegate =  self
         
         //将菜单视图和日历视图添加到主视图上
         self .view.addSubview(menuView)
         self .view.addSubview(calendarView)
     }
     
     //今天按钮点击
     @IBAction  func  todayButtonTapped(_ sender:  AnyObject ) {
         let  today =  Date ()
         self .calendarView.toggleViewWithDate(today)
     }
     
     override  func  viewDidLayoutSubviews() {
         super .viewDidLayoutSubviews()
         
         //更新日历frame
         self .menuView.commitMenuViewUpdate()
         self .calendarView.commitCalendarViewUpdate()
     }
     
     override  func  didReceiveMemoryWarning() {
         super .didReceiveMemoryWarning()
     }
}
 
extension  ViewController CVCalendarViewDelegate , CVCalendarMenuViewDelegate  {
     //视图模式
     func  presentationMode() ->  CalendarMode  {
         //使用周视图
         return  .weekView
     }
     
     //每周的第一天
     func  firstWeekday() ->  Weekday  {
         //从星期一开始
         return  .monday
     }
     
     func  presentedDateUpdated(_ date:  CVDate ) {
         //导航栏显示当前日历的年月
         self .title = date.globalDescription
     }
     
     //每个日期上面是否添加横线(连在一起就形成每行的分隔线)
     func  topMarker(shouldDisplayOnDayView dayView:  CVCalendarDayView ) ->  Bool  {
         return  true
     }
     
     //切换周的时候日历是否自动选择某一天(本周为今天,其它周为第一天)
     func  shouldAutoSelectDayOnWeekChange() ->  Bool  {
         return  false
     }
     
     //日期选择响应
     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 )
     }
}

原文出自: www.hangge.com   转载请保留原文链接: http://www.hangge.com/blog/cache/detail_1504.html
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值