因爲IOS7的發佈,因此應用的適配潮可謂是都搞的鑼鼓喧天,甚是熱鬧,所以呢,因適配IOS7而產生的問題也是鋪天蓋地的捲來,因此了,我也從簡單的狀態欄適配開始,先研究了下關於狀態欄的適配,特總結以下,供廣大網友一塊兒討論交流。html
PS:首先說明下,ios7中,因爲status bar再也不佔用單獨的20px,若是app須要同時支持ios7和ios6.1如下,那就須要適配下了,適配開始:ios
先看用xcode新建項目後 IOS7和IOS6上的的運行效果:
ps:一個empty application 裏面+了一個rootcontroller,做爲window的根控制器,view裏面放了一個tableview;xcode
是否是遇到的IOS7的新問題,狀態欄跟tableview重疊了,OK,看見這個不想看到的結果,下面咱們就開始正式的解決掉這個招人不喜歡的效果。
app
爲了達到ios7與ios6.1如下的UI統一,蘋果官方給出的建議是:
ide
蘋果官方適配建議
佈局
第一步:不要勾選xib中的Use Autolayout,以下圖:測試
第二步:第二步:選擇View as 「ios6.1 and Earlier」,仍是上圖位置處;ui
第三步:在Size Inspector中,有一ios6/7 Deltas:分別表示在PosX的增量、PosY的增量、寬度增量、高度增量。spa
ps:在「ios6.1 and Earlier」模式下,因爲status bar的高度爲20,因此當app運行在ios7.0模式下時,須要view向下移動20像素,所以在ΔY上設置爲20.
tableView座標向下移動了20,因爲整個屏幕的高度是不變的,因此在「ios7.0 and Later」模式下,須要將tableView的高度減去20像素,即在「ios6.1 and Earlier」模式下,設置tableView的ΔHeight爲 -20。若是不設置ΔHeight,tableView底部會有20像素是不可見的,能夠測試demo看看。
***注***:Δ,正數表示增,負數表示減。code
第四步:ok,設置完成,到IOS上看效果:
是否是神奇的發現跟之前的有似曾相識的趕腳呢。。。這樣「ios6.1 and Earlier」和「ios7.0 and Later」 UI佈局便統一了。