如何應用autosizing屬性使iOS應用程式介面適配iPhone5

來源:互聯網
上載者:User

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]來擷取當前裝置螢幕大小。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.