iOS開發筆記11:表單鍵盤遮擋、浮點數價格格式化顯示、省市區選擇器、View Debugging

    1.表單鍵盤遮擋

    應用場景爲一個collectionView上有多個textfield、textView供用戶填寫信息。html

    以前輸入項較少時,採起的方法比較粗暴,didSelectItemAtIndexPath時,記下collectionViewCell距離屏幕底部的間距,再與鍵盤高度做比較,根據實際狀況調整collectionView的contentOffset,可是當輸入項較多時這個方法就不行了,須要計算更多collectionViewCell距離屏幕底部的間距,容易出錯。ios

  《Text Programming Guide for iOS》-Managing the Keyboard一節中介紹瞭解決辦法,這裏因爲用了Masonry,不方便直接調整frame,稍微變通下便可數據結構

  (1)選擇輸入項時記下indexPath,方便後續collectionView滑動操做app

    這裏須要注意的是,collectionViewCell裏textField、textView的userInteractionEnabled都設置爲NO,在用戶選中時才成爲第一響應者。ide

  (2)得到鍵盤高度,根據鍵盤高度對collectionView調整,並滑動到目標cel的位置工具

  (3)鍵盤隱藏時,恢復collectonView的初始約束佈局

    2.浮點數價格格式化顯示

    有這樣一個應用場景:價格精確顯示到2位小數 ,小數點爲0則不顯示,例如99.00顯示爲99,99.90顯示爲99.9元,直接用NSString的stringWithFormat方法轉換小數點部分的顯示是不符合要求的,會有多餘的0,解決辦法是先轉換獲得包含2位小數的字符串,再特殊處理一下便可將小數部分的0去掉,如圖所示:ui

    參考:iOS 浮點數去掉小數點以後的0.00以及價格格式顯示spa

    3.省市區選擇器

    數據來源:中國省市區三級聯的JSON格式 3d

    須要注意數據不是最新的,例如北京的密雲縣、延慶縣已經撤縣改區,崇文區、宣武區已經被撤銷合併,根據數據結構這裏將數據用兩個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元素的約束設置問題。

相關文章
相關標籤/搜索