在 iOS8 中,我們不用再像以前那樣,一個(gè)頁面新建多個(gè) xib 文件來適配不同類型的屏幕,現(xiàn)在我們可以把各種尺寸屏幕的適配工作放在一個(gè)文件中完成,然后可以通過不同類別的 Size 來定制各種尺寸的界面。換句話說,你眼前的 Storyboard 不是一個(gè)普通的 Storyboard ,而是一個(gè)九合一的 Storyboard ,可以管理九種類型的屏幕。
對(duì)于寬度和高度而言,都有三種情況:緊湊 (Compact) 、任意 (Any) 、 正常 (Regular) ,所以一共有3*3=9個(gè)類別。
在設(shè)置 Size Class 的時(shí)候頁面會(huì)有提示。默認(rèn)情況下寬和高都為Any,如下圖。
我們可以從上圖Size%20Class設(shè)置界面看到,上方文字Any%20Width%20Any%20Height就是表示寬和高都為任意;下方文字For%20all%20layouts%20意思顯然就是適用于所有尺寸。
Size%20Class%20的作用是將不同尺寸的屏幕進(jìn)行分類處理,而最后進(jìn)行布局管理的還是Autolayout。
現(xiàn)在我們做一個(gè)小實(shí)驗(yàn),首先向視圖中加入一個(gè)居中的button按鈕,如下圖所示
這時(shí)候 我們?cè)龠M(jìn)入Size Class的設(shè)置界面,將Size設(shè)置為如下圖所示

從Size Class設(shè)置界面的上方文字可以看到,此時(shí),寬度是正常的,高度是緊湊的;從下方文字可以看到For 5.5inch iphones in landscape。意思即為適用于5.5寸iPhone橫屏,那不就是iPhone6+橫屏嘛。(至于其他的Size,我就不再演示,只演示這一個(gè),我想大家都可以舉一反三的)。我們這時(shí)候再向屏幕中假如一個(gè)按鈕button,如下圖

這時(shí)運(yùn)行程序就可以看到效果,我們第一次添加的按鈕,無論是用iPhone4,5還是6等都會(huì)出現(xiàn),但是第二次添加的按鈕,只有在iphone6+的橫屏的情況下才會(huì)出現(xiàn)。我想大家應(yīng)該明白為什么第二個(gè)按鈕只會(huì)在iPhone6+上面顯示了吧。這我就不再解釋了。
演示結(jié)果(iphone6+豎屏和橫屏)


有網(wǎng)友問我如果一個(gè)控件在不同的設(shè)備尺寸上有不同布局,那應(yīng)該怎么做。。接下來就解釋一下。前面說話過Size Class的作用僅僅是講不同尺寸的屏幕進(jìn)行分類處理,而最后進(jìn)行布局管理的始終都是AutoLayout。所以如果想讓一個(gè)控件在不同尺寸有不同的布局,肯定是需要修改AutoLayout。
我們還回到默認(rèn)的Size界面,下圖的AutoLayout是我之前已經(jīng)添加上的。我現(xiàn)在的需求是讓想讓頁面中的那個(gè)Button按鈕在iPhone6+橫屏中 距離他的父視圖的頂部是0,而不是現(xiàn)在的121.參照下圖





新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注