據(jù)說Size Classes這項技能是iOS 8在應(yīng)用界面的可視化設(shè)計上添加的一個新的特性瓤漏。個人認為此項特性主要是為了解決不同屏幕下(尺寸不同或者橫豎屏)的頁面展示問題。
新建一個工程沧踏,打開Main.storyboard,點擊w:Any h:Any,會看到當前的view是處于width是任意的,height是任意的狀態(tài)(默認的)棕所。而我們想要達到不同屏幕下的展示不同擂啥,就是依靠改變w h 的值來改變的。
但是我們看到圖中的寬度和高度都是Any,Any是什么意思呢才避?如果weight設(shè)為Any橱夭,height設(shè)置為Regular,那么在該狀態(tài)下的界面元素在只要height為Regular桑逝,無論weight是Regular還是Compact的狀態(tài)中都會存在棘劣。這種關(guān)系應(yīng)該叫做繼承關(guān)系,具體的四種界面描述與可繼承的界面描述如下:
w:Compact h:Compact 繼承 (w:Any h:Compact , w:Compact h:Any , w:Any h:Any)
w:Regular h:Compact 繼承 (w:Any h:Compact , w:Regular h:Any , w:Any h:Any)
w:Compact h:Regular 繼承 (w:Any h:Regular , w:Compact h:Any , w:Any h:Any)
w:Regular h:Regular 繼承 (w:Any h:Regular , w:Regular h:Any , w:Any h:Any)
不同的設(shè)備楞遏,已經(jīng)不同的橫豎屏幕都對應(yīng)不同的寬高描述
iPhone4S,iPhone5/5s,iPhone6/6s
豎屏:(w:Compact h:Regular)
橫屏:(w:Compact h:Compact)
iPhone6 Plus/6s Plus
豎屏:(w:Compact h:Regular)
橫屏:(w:Regular h:Compact)
iPad
豎屏:(w:Regular h:Regular)
橫屏:(w:Regular h:Regular)
Apple Watch(猜測)
豎屏:(w:Compact h:Compact)
橫屏:(w:Compact h:Compact)
使用:我們可以通過調(diào)整不同的w h 的描述來得到不同屏幕下想要得到的效果茬暇,如果已經(jīng)在wAny hAny 狀態(tài)下對控件進行了約束,那么我們在不同的描述下(w h)需要去刪除之前的約束橱健。在使用的時候還可以配和屏幕預覽(preview)來實時查看不同屏幕下的效果?(默認只有4s的屏幕,點擊左下角加號添加不同屏幕沙廉,包括ipad)
對于同一storyBoard里有很多界面拘荡,不同界面需要設(shè)置不同sizeClasses,我們可以逐一設(shè)置撬陵,xib可以點擊右側(cè)箭頭下面的installed選項來選擇安裝或者不安裝珊皿。
可以總結(jié)為:
如果項目不支持橫屏顯示,使用w:Compact h:Regular(或者直接取消使用Size Class)
如果項目支持橫屏顯示,使用w:Compact h:Regular+w:Any h:Compact
對于一些公有的約束(任意組合中都適用),一般放在w:Any h:Any中設(shè)置
iPad同理