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

转载 2017年01月03日 09:32:58
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 ViewControllerUIViewController {
    //星期菜单栏
    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 ViewControllerCVCalendarViewDelegate,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 ViewControllerUIViewController {
    //星期菜单栏
    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 ViewControllerCVCalendarViewDelegate,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

相关文章推荐

Swift - 日期选择控件(UIDatePicker)的用法

纯代码创建日期选择控件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

在iOS上实现一个简单的日历控件

近期需要写一个交互有点DT的日历控件,具体交互细节这里略过不表。 不过再怎么复杂的控件,也是由基础的零配件组装起来的,这里最基本的就是日历控件。 先上图: 从图中可以看出日历控件就是由一...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

swift 往系统日历中添加提醒事项

准备工作 添加 EventKit.framework 在当前类   import EventKit 实现添加 func addToCalendarClicked() { ...

Swift3.0中关于日期类的使用指引

基本概念 在具体开始写代码之前, 搞清楚一些基本的概念是十分必要的: NSDate对象: 同时可以描述日期和时间, 当要处理日期或者时间时会使用到. DateFo...

swift3.0 包含年月日十分 时间选择器的实现

相信很多app需要显示年月日时分,但是系统自带的datapicker选择时分后没有年月,故需要这样的 项目上不需要显示秒,所以隐藏了秒,需要显示秒的同学,可以参照代码隐藏即可 效果图: vie...

swift开发笔记11 - 使用UIAlertController在底部弹出日期选择框

使用UIAlertController在底部弹出日期选择框UIDatePicker,并在UIAlertController的确定按钮中处理选中的日期。...

Swift基础之PickerView(时间)选择器

代码讲解:(后面有额外代码讲解) 首页设计UIPickerView的样式设计: leftArray = ["花朵","颜色","形状"];                  let arr...
  • hbblzjy
  • hbblzjy
  • 2016年08月02日 11:01
  • 3308

FSCalendar

FSCalendar
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Swift - 第三方日历组件CVCalendar使用详解1(配置、基本用法)
举报原因:
原因补充:

(最多只允许输入30个字)