iOS6到iOS7的適配

問題原因:iOS7的狀態欄(status bar)不再佔用單獨的20px,所以如果你在iOS6上的界面佈局是正常的,那麼到了iOS7上就會變成下面這個樣子:

           

左邊是iOS6界面佈局,右邊是iOS7界面佈局。這時有人會想着把iOS7界面上控件整體向下移動20px,但是當Interface Builder Document改成Xcode 4.6時又變成了如下情況:

           

界面不會因爲你在不同的Interface Builder Document值下設置不同的佈局而不同,所以必須用Xcode 5的iOS 6 / 7 Deltas機制解決。

假設你之前基於的是iOS6開發的應用,此時佈局是正確的,移步到控件的size inspector頁面對iOS 6 / 7 Deltas屬性進行設置。

因爲我們做的是高度適配,所以我們用到△Y和△Height兩個值,我們現在是基於iOS6去適配iOS7,所以6上正確了,7的佈局就會跟狀態欄重疊,故View和TableView的△Y值都應該設置爲20,即6上佈局在7上顯示時,Y座標下移20px,這樣就不會與狀態欄重疊了。但是整體下移了20px,TableView底部20px的區域將無法顯示,所以這時候要單獨設置TableView的△Height爲-20,即在7上顯示時,TableView的高度要減小20px,以使TableView全部顯示在屏幕內。此時將Interface Builder Document改爲Xcode 5發現,界面顯示正常,查看各控件的iOS 6 / 7 Deltas值,發現其與在Xcode 4.6下設置的值正好相反,即如果基於iOS7佈局去修改iOS6的佈局,那麼應該將△Y設置爲負值,即讓控件在iOS6上顯示時向上移動相應的高度。

最終的效果:

        

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章