zoukankan      html  css  js  c++  java
  • iOS开发笔记11:表单键盘遮挡、浮点数价格格式化显示、省市区选择器、View Debugging

        1.表单键盘遮挡

        应用场景为一个collectionView上有多个textfield、textView供用户填写信息。

        之前输入项较少时,采取的方法比较粗暴,didSelectItemAtIndexPath时,记下collectionViewCell距离屏幕底部的间距,再与键盘高度作比较,根据实际情况调整collectionView的contentOffset,但是当输入项较多时这个方法就不行了,需要计算更多collectionViewCell距离屏幕底部的间距,容易出错。

      《Text Programming Guide for iOS》-Managing the Keyboard一节中介绍了解决办法,这里由于用了Masonry,不方便直接调整frame,稍微变通下即可

      (1)选择输入项时记下indexPath,方便后续collectionView滑动操作

        这里需要注意的是,collectionViewCell里textField、textView的userInteractionEnabled都设置为NO,在用户选中时才成为第一响应者。

      (2)获得键盘高度,根据键盘高度对collectionView调整,并滑动到目标cel的位置

      (3)键盘隐藏时,恢复collectonView的初始约束

        2.浮点数价格格式化显示

        有这样一个应用场景:价格精确显示到2位小数 ,小数点为0则不显示,例如99.00显示为99,99.90显示为99.9元,直接用NSString的stringWithFormat方法转换小数点部分的显示是不符合要求的,会有多余的0,解决办法是先转换得到包含2位小数的字符串,再特殊处理一下即可将小数部分的0去掉,如图所示:

        参考:iOS 浮点数去掉小数点之后的0.00以及价格格式显示

        3.省市区选择器

        数据来源:中国省市区三级联的JSON格式 

        需要注意数据不是最新的,例如北京的密云县、延庆县已经撤县改区,崇文区、宣武区已经被撤销合并,根据数据结构这里将数据用两个Model来表示了

        使用UIPickerView实现,三列数据分别代表省市县,联动选择即可。有三个地方需要注意:

      (1)当已有数据,再次进行选择需要定位到现有数据位置

        通过已有数据获得pickerView三列的index值,但是需要注意初始化数据后要先reload后,再通过selectRow方法滚动到指定位置,否则会滚动不到指定位置。 

      (2)三级联动

       即省/直辖市改变,市、区/县也要跟着改变,通过更新对应数据集合即可,这里做的是省/直辖市改变,市、区/县默认滚动到第一条显示,市改变,区/县默认滚动到第一条显示。

      (3)内容样式修改

        默认显示的内容样式不符合要求,需要修改其内容样式,例如文字大小等等,UIPickerView本身是提供了这样的一个代理方法供我们去自定义

        4.View Debugging

       Xcode本身提供了一些视图调试的小工具 ,画界面的时候调试分析问题很管用,尤其是当界面显示不正确的时候有助于定位问题。Xcode工具栏Debug-View Debugging中能找到这些小工具,从上到下分别是屏幕截图快照、视图分层次析以及显示View的frame等等

       

      (1)屏幕截图快照顾名思义就是截取屏幕当前状态保存为照片了

      (2)Capture View Hierarchy这个有助于检查界面的约束、视图层次等

       

      (3)Show View Frames/Show Alignment Rectangles用来显示视图元素的frame或对齐矩形,个人一般用show View Frames这一选项,最后屏幕上各个UI元素周围会多出一个矩形,代表其尺寸大小,对一些元素之间布局显示异常的情况,有助于定位找到UI元素的约束设置问题。

  • 相关阅读:
    201521123042 《Java程序设计》 第10周学习总结
    201521123042《Java程序设计》 第9周学习总结
    201521123042 《java程序设计》 第八周学习总结
    201521123042《Java程序设计》 第7周学习总结
    201521123042 《Java程序设计》第6周学习总结
    201521123042 《Java程序设计》第5周学习总结
    markdown 模板
    201521123042 《Java程序设计》第4周学习总结
    201521123042 《Java程序设计》第3周学习总结
    201521123038 《Java程序设计》 第十二周学习总结
  • 原文地址:https://www.cnblogs.com/colinhou/p/5219502.html
Copyright © 2011-2022 走看看