屏幕適配問題共有四種解決方案:(1)根據屏幕寬高寫控件frame(下策);(2)Autoresizing的使用(中策);(3)AutoLayout的使用(上策);(4)sizeClasses+AutoLayout的使用(上上策)。下面將會分別來進行敘述。
(1)根據當前屏幕的寬高寫frame
在新特性界面中训柴,根據:[UIScreen mainScreen].bounds.size.height.來判斷用戶的屏幕長度匣距,來判斷時3.5寸腺占,4寸旺芽,4.7寸,5.5寸祟同,以此來設置新特性中圖片選用哪套楷掉。
常用寫法:
#define JKScreenW [UIScreen mainScreen].bounds.size.width
CGFloat btnW = JKScreenW * 0.2;
缺點:代碼復雜厢蒜,容易出錯;而且維護難度大,靈活性極差烹植。
(2)Autoresizing使用
在Autolayout以前斑鸦,有Autoresizing可以做屏幕適配,但局限性較大草雕,只能針對父子關系進行有限調整巷屿,如邊距固定,尺寸可變墩虹,對于兄弟關系的調整無法實現(xiàn)嘱巾。對于UI比較固定的app,這種方式基本滿足诫钓。相比之下旬昭,Autolayout比Autoresizing強大很多。
(3)Autolayout使用
--在以前的iOS程序是怎樣布局UI的?
經常編寫大量的坐標計算代碼;
為了保證在各種屏幕上都能有完美的UI界面效果菌湃,有時還需要分別為幾種屏幕編寫不同的坐標計算代碼(即傳說中的“屏幕適配”)
--什么是Autolayout?
Autolayout是一種“自動布局”技術问拘,專門用來布局UI界面的。
Autolayout自iOS6開始引入惧所,由于Xcode4的不給力场梆,當時并沒有得到很大的推廣。
自iOS7(Xcode5)開始纯路,Autolayout的開發(fā)效率得到很大的提升。
蘋果官方也推薦開發(fā)者使用Autolayout來布局UI界面寞忿。
Autolayout能夠很輕松的解決屏幕適配的問題驰唬。
(4)Size Classes使用
iOS8中新增了Size Classes特性,他是對當前所有iOS設備尺寸的一個抽象。
用法:
屏幕的寬和高分別分成三種情況:(Compact,Regular,Any).也就是緊湊叫编,正常和任意辖佣。這樣寬和高三三整合,一共九種情況搓逾。針對每一種情況卷谈,如果需要的話,我們可以單獨在storyboard或xib中設置UIView的自動布局約束霞篡,甚至某一個button是否顯示都是能輕松實現(xiàn)的世蔗。