在iOS軟件的開發(fā)過程中译断,無論是在開發(fā)API的使用上還是在系統(tǒng)界面的設(shè)計布局上都離不開版本設(shè)備之間的適配問題勋又。
只有合理的處理好軟件系統(tǒng)在不同移動終端的適配問題才能提高用戶體驗度兼呵,更好的獲取用戶满败。
簡單的談?wù)勏到y(tǒng)在兼容IOS6和IOS7時的問題:
1)坐標(biāo)設(shè)定問題:以屏幕左上角為原點(iOS7以前在狀態(tài)欄或者導(dǎo)航條下)贴铜。
適配的部分實現(xiàn)代碼如下:
判斷當(dāng)前IOS設(shè)備的系統(tǒng)版本
對IOS6和IOS7的設(shè)備分別做不同的坐標(biāo)處理
2)隱藏頂部狀態(tài)欄問題:IOS6隱藏狀態(tài)欄時粪摘,原來狀態(tài)欄的位置會出現(xiàn)空白部分瀑晒。IOS7及其以后的版本頁面視圖會上調(diào),覆蓋原來狀態(tài)欄的位置徘意。
適配的部分實現(xiàn)代碼如下:
進(jìn)入頁面時苔悦,隱藏頂部狀態(tài)欄
進(jìn)入頁面時,適配IOS6
另外上面需要注意的是椎咧,導(dǎo)航條的優(yōu)先級高于狀態(tài)欄的玖详。所以,如果調(diào)整視圖位置的時候使用self.view.frame = frame. 這樣是沒有
效果的勤讽,狀態(tài)欄原先的空白區(qū)域依然存在蟋座。必須對導(dǎo)航條當(dāng)前的視圖操作才有效:self.navigationController.view.frame = frame.這樣
才能覆蓋狀態(tài)欄原先的空白區(qū)域。
退出頁面時地技,適配IOS6
3)IOS7的邊沿延展新特性蜈七。在IOS7下,控制器的視圖會被導(dǎo)航條掩蓋住莫矗。IOS6則不會出現(xiàn)這類問題飒硅。
適配的部分實現(xiàn)代碼如下:
取消IOS7的邊沿延展特性
4)IOS7界面自動布局特性。在系統(tǒng)的XIB視圖文件中將布局配置UseAutoLayout選項取消勾選作谚。
另外三娩,在處理IOS系統(tǒng)版本的適配問題上,應(yīng)該將一些處理視圖類的特征適配抽象到處理的基類中妹懒。方便代碼的重構(gòu)和擴(kuò)展雀监。比如寫一個繼承ViewController類的子類CustomViewController,將處理IOS7邊沿自擴(kuò)展特性的代碼點封裝進(jìn)去眨唬。也可以在CustomViewController其封裝定制自己的導(dǎo)航條特性会前。比如定制導(dǎo)航條的背景圖,導(dǎo)航條的返回按鈕樣式等匾竿。