一.任务要求:
根据式样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.标题显示选择数据和 用户选择日期回传:
只要可以获得正确的数据,标题显示数据 和日期回传都相对较简单,忽略不计