首页 > 代码库 > 自定义日历模态插件编程总结

自定义日历模态插件编程总结


一.任务要求:


根据式样demo,点击按钮,在本视图弹出一个模态对话框,显示自定义日历,选择日期,日历标题进行相应的变化,点击对话框最下边确定按钮,将当前选择的日期传递回去


二.任务分析:



1.实现样式的确定:


主要包括 :合理控件和视图的选取    控件和视图的布局和层级设计    模态弹出效果的实现类型和实现方式


难点:模态效果的制作     设计模态层级过程中的点击阴影部分,能够实现的根视图和当前视图的替换



模态效果制作难点:


ios7 之后,iOS 的模态效果默认是弹出的为全屏,即presentModalView 只能弹出全屏的界面,iphone 上用模态方法不能实现式样效果,


导航 和tab 的设计格式均与式样不符


因此替换了刚开始的设计方案,视图设计参考了单纯使用view 实现的模态效果方法




2.日历逻辑功能实现:



主要包括:


控件的选取  系统日期到式样所要实现的日期格式的转换     PickerView 日历数据算法实现  模态视图标题时间和选择时间的一一对应




难点1:


控件选取:


刚看式样,是日历,跟时间有关,选择的DatePicker 控件进行实现,这个实现起来比较容易,但要实现式样中的日期显示格式,以及对显示字体和控件大小进行灵活调整,

DatePicker 功能太有限,因此 又替换了DatePicker ,改为用PickerView 进行实现



重点2:


系统日期到式样的日期格式的转换:


因为PickerVIew 没有时间功能,Picker 中显示的特殊格式日期必须通过系统时间进行转换。涉及内容包括:1.读取系统时间,2.中文和中国时区处理;3.星期中文处理;4.生成PickerView 数据



重点3:


因为日历操作过于频繁,12月 到1月的年份转换,原计划根据 12月 到1月 加一年,1月到12月减一年,这样实现算法符合操作习惯,但后面实现过程中,


发现PickerView 控件能够隔行滚动,较难控制,换成了根据月份row 列取余数和当前年份相加



难点4:


PickerView 显示数据为两列,样式和数据显示过程中出了点问题,重点需要关注的是 didSelected Row代理方法中,前一列数据需要与后一列数据进行关联,这样才能得到正确的数据



3.标题显示选择数据和 用户选择日期回传:


只要可以获得正确的数据,标题显示数据 和日期回传都相对较简单,忽略不计

自定义日历模态插件编程总结