iOS 8 SizeClass同Auto Layout的使用

來源:互聯網
上載者:User
在螢幕越來越多的蘋果圈裡,就算單單是做手機應用,在螢幕尺寸的判斷上也不再是一個if就能解決的問題。在iOS8上apple新出了sizeClass這一功能配合以前的Autolayout使用,完美的解決了螢幕適配的問題。
SizeClass將螢幕的寬度和高度都抽象為三種情況:緊湊 (Compact) 、任意 (Any) 、 正常 (Regular),兩兩組合下,一共有9種類別,所以SizeClass看起來就像一個可以隨意切換畫面的九宮格,在設定 Size Class 的時候頁面會提示當前介面適配哪種螢幕。這樣把各種尺寸的介面放在一個Storyboard中,我們在為各種螢幕做適配工作的時候就可以在一個檔案中完成,然後根據不同裝置螢幕大小的不同進行調整。

建立一個項目,裝置選擇Universal,預設的都是啟用了SizeClass 和Autolayout ,Storyboard的預設尺寸寬高均為 Any:

在(w:Any | h: Any)下添加一個按鈕到Storyboard上:

SizeClass的作用是將不同尺寸的螢幕抽象出來進行分類處理,後面進行布局管理的還是Autolayout,接下來開始向按鈕添加約束,點擊右鍵選中按鈕,向上拖(control鍵+左鍵向上拖也可以達到這個效果),選擇“Top Space to Top Layout Guide”約束按鈕距離螢幕頂部的距離,確定按鈕的Y


添加第一個約束後,左邊視圖出現一個紅色剪頭提示:

點進去,系統提示X也需要約束

右鍵選中按鈕向左拖動(或者control鍵+左鍵向左拖)選擇"Leading Space to Container Margin”,確定按鈕的X:

這時左上方的紅色錯誤已經消失,剩下一個警告,提示預期的按鈕大小和實際按鈕大小不一致:

右鍵選中按鈕,拖動到自己會出現下圖,選擇width和height固定按鈕的寬高:

或者點擊下方的按鈕,將width和height都勾上,然後點擊 add 2 constraints:

這樣下來對這個按鈕的約束就完成了,左上方的警告也消除,點擊按鈕,可以在右邊看到按鈕上的約束並修改約束值:

隨意選中一個約束,可以在右邊去掉Installed前面的√,點擊加號從sizeClass的9中介面類型中選擇在哪種類型的介面隱藏或顯示此約束:

剛剛都是在單獨的講解SizeClass和AutoLayout,現在將它們聯合起來進行螢幕適配,開啟九宮格,選擇iPhone屏(w:Compact | h:Any):

在上面放幾個label:



接下來將螢幕切換到iPad(w:Regular | h:Regular),可以看到在iPad介面工作時,iPhone介面下拖的label是灰色的,表示不可用。

接下來就讓程式在iphong和iPad上分別跑起來:

如果有童鞋建立的項目只選擇了iPhone的話,那麼不論你在iPad屏上怎麼設定模擬器上顯示出來的都是在iPhone上設計的樣式(血淚教訓,當時還認為自己環境有問題)依照這個功能,我們就能在iPhone和iPad上充分利用螢幕的特性設計UI了。
想要刪除某個螢幕上的約束用 command+delete鍵刪除,這樣就只是在iPhone屏上刪除掉此約束,顯示為灰色,表示不可用其他尺寸不受影響。

選擇iphone屏,在上面建立一個按鈕:

右鍵選中黃色按鈕拖動到紅色按鈕,選擇Horizontal Spacing(設定黃色按鈕到紅色按鈕的橫向間距)確定X:

點開左邊的錯誤,提示Y也需要約束:

右鍵向上拖動按鈕,選擇“Top Space to Top Layout Guide”,確定Y:

現在又剩下一個警告,提示預期的按鈕大小和實際按鈕大小不一致,這次我們把黃色按鈕的大小約束設定到紅色按鈕上去,讓它們一樣大小:

右鍵拖動到紅色按鈕,選擇寬,高相等:

點開左邊的警告,選擇update frame,更新架構:

更新後的介面應該是這個樣子的:

和想象中有點不一樣,黃色按鈕低了一點,在右邊修改黃色按鈕到頂部的長度和紅色按鈕一樣:

這下就沒問題了:

大小除了寬高相等之外,還可以在設定中按比例設定兩個按鈕的寬高(可自訂輸入比例):


對於有特殊需求的還可以選擇”Aspect Ration“設定兩個按鈕寬和高的比例進行大小設定:

當然,如果要進行寬高比例進行大小約束,前面設定的大小約束就要刪除掉,不然會造成約束衝突,總之,約束就是為了確定一個控制項在螢幕上的唯一位置,確定X,Y,然後賦大小。
因為自己也是學了之後沒有進行項目就寫的這篇部落格,可能大家看著會感覺很混亂,沒水平,有錯誤,但也是自己對這個知識點的一個理解了,希望能讓大家有所收穫,提出錯誤和不足之處。


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.