from:http://blog.csdn.net/gckjdev/article/details/8072484
如何應用autosizing屬性使iOS應用程式介面適配iPhone5
分類: iPhone Objective-C 行動裝置 App 2012-10-15 12:08 7835人閱讀 評論(5) 收藏 舉報
iphoneiosxcode4uiviewui
iPhone5的螢幕為320*568,而之前的iPhone均為320*480。由於螢幕大小的變化,使得原來開發的應用在iPhone5上面看的話,會留下上下兩條黑邊,除此之外,很多頁面的布局也亂了。
實際上,最好的方法是,為iPhone5增加一個新的xib,重新布局UI,這樣子才能根據iPhone5螢幕的解析度來進行UI設計,也是最好的解決方案。但是這種方法耗費的時間成本太大。本文提供一個快速的適配iPhone5的方法。(無需監測裝置型號,無需增加xib)。
1、消除上下黑邊:如果你原來的程式是適應320*480的話,在iPhone5上面啟動並執行結果如下,可以看到上下有兩條黑邊。如所示:
採用xcode4.5,編譯你的程式,會有一行warnning,如下所示:
點擊這個warnning,即彈出:
點擊add按鈕即可。
經過上面這個步驟之後,我們可以看到上下兩條黑邊不見了。
2、controller裡面的view布局:我們看到運行在iPhone5上的程式,布局有些地方亂了。這是由於布局的原因引起的。每個從view繼承下來的類,都有一個autosizing的屬性,我們可以通過autosizing屬性的調正來改變我們的布局來適配iPhone5。如:
我們可以看到,autosizing在xib中可以直接設定,圖中顯示的是上下左右四個方向的縮排,以及中間的上下展開屬性。
我們先來看看上下左右的縮排,虛線表示按比例縮排,實線表示按於邊界距離固定縮排。
中間的橫向箭頭如果為實線,則表示當前的view的寬度和其superView的寬度保持比例縮放;如果是虛線,則表示當前view的寬度保持不變。
中間的縱向箭頭如果為實線,則表示當前的view的高度和其superView的高度保持比例縮放;如果是虛線,則表示當前view的高度保持不變。
我們在第一個步驟中,會將controller裡面的view自動展開到iPhone5的解析度。所以,我們的xib還是借用原來的xib不用改動。而對於view中的subviews,則要修改其autosizing的屬性,以保證當view展開的時候,這些subviews也能跟著“動”起來。
3、如果有自訂的view並且是通過代碼add到其他的view上去的話,則需要通過代碼來設定autosizing的屬性。autosizing有六種屬性可以設定,分別如下:
UIViewAutoresizingFlexibleTopMargin:與superView上邊界保持動態距離(按比例)
UIViewAutoresizingFlexibleBottomMargin:與superView下邊界保持動態距離(按比例)
UIViewAutoresizingFlexibleLeftMargin:與superView左邊界保持動態距離(按比例)
UIViewAutoresizingFlexibleRightMargin:與superView右邊界保持動態距離(按比例)
UIViewAutoresizingFlexibleWidth:與superView寬度成比例
UIViewAutoresizingFlexibleHeight:與superView高度成比例
4、我們經常會在controller裡面實現一個方法,即showInView,即把當前controller的view顯示作為subview到其他view上去,如果你是想覆蓋整個螢幕,則在showInView方法中應該使用下面語句來適配iPhone5:
[cpp] view plaincopy
(void)showInView:(UIView*)view
{
self.frame= view.bounds;
// your codes.
// ........
}
同時,將controller裡的view的autosizing設定成按寬度和高度展開的即可。
注意:在適配iPhone5的時候,要注意不要去監測裝置的型號或者是裝置類型,因為我們是對像素做適配,而不是對某種機型做適配。你可以使用[[UIScreen mainScreen] bounds]來擷取當前裝置螢幕大小。