iOS开发 - 第02篇 - UI进阶 - 06 - PickerView & DatePicker

实现:以下几个关于UIPickerView & UIDatePicker 的简单使用


源代码下载地址:点击打开链接


1、Picker控件文档路径




2、点菜系统


2.1 界面




2.2 实现思路


1> 懒加载数据,这里简单不需要模型,直接用一个数组即可(由三个数组构成的数组)

2> 在Storyboard中拖入UIPickerView控件

3> 跟UITableView控件类似,设置UIPickerView的dataSource数据源和UIPickerViewDelegate代理




注:在UITableView中,需要设置每个Cell的样式内容在其dataSource,返回UITableViewCell的方法中,但是在UIPickerView中,需要设置每个View的样式内容在其delegate,返回NSString或UIView方法中

UITableView设置Cell样式的dataSource方法:




UIPickerView设置View样式的delegate方法:




4> 实现数据源和代理

5> 添加UILabel,监听选中哪一行,实现以下代理




6> 随机处理




补:生成指定范围的随机数




3、国旗选择


3.1 界面




3.2 实现思路


1> 建立国旗模型

2> 设置UIPickerView的dataSource和delegate

3> 实现dataSource和delegate

4> pickViewCell方法测试




5> 自定义pickerViewCell(继承自UIView),利用XIB,关联类

6> 类方法返回自定义pickerViewCell

7> 自定义pickerView中添加模型,添加setter方法

8> 在ViewController的UIPickerView代理方法中根据模型返回自定义pickerView

9> 设置View高度



3.3 可重用View




注:在iOS7中,可重用View有bug:第一次会加载所有的View!


4、省市联动


4.1 界面




4.2 实现思路


1> 建立数据模型

注:这里不需要嵌套式模型,字典里面只是一个NSString和数组

2> 设置UIPickerView的dataSource和delegate

3> 实现dataSource和delegate

基本测试:








4> 根据第一组的省份,显示第二组的城市,因此添加一个省份索引,表征当前选中的省份,并设置View的宽度




5、DatePicker --- 重要


5.1 界面




5.2 UITextField自定义键盘 --- 重要


设置其textField的inputView即可,比如QQ、微信中的表情,将表情放置在一个UIView中,设置inputView。


5.3 实现思路


1> 设置textField的inputView为UIDatePicker




2> 界面中的上一个、下一个为键盘的工具条(UIToolbar),里面的控件为UIBarButtonItem,设置键盘的辅助View(工具条)




注:一定要设置toolBar的bounds,否则不能改变toolBar的背景颜色,并且不能监听Item的点击事件。

3> 设置datepicker的本地化和模式




4> UIBarButtonItem监听事件(日期格式处理)




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
绘制飘动的国旗绘制总结 需求 将国旗图片在OpenGL中绘制出来,再实现飘动效果,最后增加半透明效果。 实现步骤 1. 首先确定使用分割法将整张图片分割成若干份,画在一个网格组成的长方形中 2. 画出N*N格的方格 3. 将国旗图案贴到这个网格中 a) 计算网格各顶点坐标 Vertex b) 计算各顶点对应的纹理坐标 texcoord c) 计算各顶点所对应的顶点法向量 Normal d) 计算出需要绘制的各顶点的顺序 order 4. 绘制飘动效果 a) 根据正弦曲线,计算出各顶点所对应的深度值 zDepth b) 计算出正弦曲线的波动 i. 坐标点的变动 ii. 顶点法向量坐标值的变动 5. 增加灯光效果 6. 增加材质的效果 遇到的问题 1. 确定网格的密度 网格的密度决定了波动的频率大小 2. 写出绘制的递归方法 开始实现时是通过循环绘制出每一个网格的纹理贴图,组合成整个图像,绘制效率较低且浪费资源较多,而且将图像进行旋转操作的时候会变形,不能达到预想的效果,所以开始对其进行整合 3. 计算各定点坐标时是使用三维数组的形式生成的,较简单,但是OpenGL绘制的时候需要的是buffer形式的,生成buffer时需要的是一维数组,java中没有指针,所以需要自己写个方法把三维数组的内容转换到一维数组中,以求出buffer 4. 生成纹理坐标时比较简单,再生成顶点坐标的同时就可以生成,但是实现后遇到问题,问题贴图是上下颠倒的,所以需要与顶点对应的纹理坐标需要上下转换一下,虽然感觉比较麻烦,但是还是比较容易实现的 5. 计算各顶点所对应的法向量时遇到很大的麻烦,由于长时间没有接触相关的数学知识,对法向量的概念有点生疏了,后来查找资料对法向量的概念进行复习,我写的生成顶点法向量的方法比较麻烦,写了5个方法来实现顶点法向量的计算,最后还是实现了 6. 各顶点顺序的计算,需要按照纹理贴图的相应顺序将顶点顺序确定出来,我用的最笨的方法得的,计算出2*2网格的定点坐标,根据坐标计算出顶点顺序,然后写出求顶点顺序的递归算法实现了顶点顺序的计算 7. 根据正弦曲线求出各点的深度,这个方法并不难写,但是在实现的时候,由于把顶点的顺序计算的有一点问题,画出来的图形在移动时不是按照正弦曲线的规律,使得波动的规律看起来极不自然,后来把顶点的计算改正后,还是比较美观的 8. 计算波动的时候,只需要将顶点的z轴坐标依次移动就可以了,比较容易实现,对于顶点法向量的移动,同样是后一个向前一个依次移动,但是移动的是x、y、z三个变量,我绘制的正好是两个波长的波动曲线,多以可以把第一个先缓存起来,赋值给最后一个即可,如果不是整波长的波动,可以把最后一列的顶点z值和顶点法向量重新计算,但是会影响一定的效率,所以建议整波长的比较好 9. 增加灯光效果和材质属性 由于之前没有接触过,所以先进行了学习,然后再增加,遇到的问题是写增加灯光效果的时候,由于疏忽,三种光效属性中均写成了对环境光的修改,所以多费了些时间;在对材质属性进行增加的时候,由于对混合渲染不熟悉,尤其是对glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);两个参数所影响的色彩混合效果不明确,所以增加半透明效果的这块是试出来的。 10. 在不贴图的情况下,灯光效果比较明显,但是在贴图后,半透明效果有,但是灯光效果看不出来了,这块还没有解决。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值