標籤:
1. 螢幕適配的各種技術
1> 3gs\4\4s時代:沒有螢幕適配一說,尺寸只有一個,直接用代碼計算frame就行了
2> iPad出現:為應對橫豎屏,蘋果推出autoresizing,它的作用是讓子控制項能跟隨父控制項做展開.如,autoresizing可以讓紅色的子控制項的寬度始終鋪滿螢幕
3> 5\5c\5s的出現:autoresizng不夠用了,因為它只能解決父子關係控制項的排布問題,解決不了兄弟關係控制項之間的位置關係,所以autolayout出現了.
autolayout,可以在任意2個控制項之間建立位置關係
4> 6\6plus的出現:autolayout又不夠用了,sizeclass可以實現autolayout做不到需求
autolayout不夠用的原因:
a>Universal的項目,有2套storyboard,一套是給iphone用,另一套給ipad用的,這就意味著需要對每一套storyboard,設定約束
b>非Universal項目,比如iphone項目,autolayout無法實現 不同尺寸的iphone使用不同的布局方案
2.sizeclass
1>sizeclass 僅僅是對螢幕進行了分類,真正排布UI元素的還是autolayout
2>不再有橫豎屏的概念,只有螢幕尺寸的概念
3>不再有具體尺寸的概念,只有抽象尺寸的概念
2.1 抽象尺寸:把長和寬各分為3種:分別是Compact(緊湊的),Any,Regular(寬鬆)
1>這樣一划分,螢幕尺寸就9種排列組合:
2>在不同螢幕尺寸類型下,可以為控制項添加不同的約束條件
3>可以讓同一個imageView,在不同的螢幕尺寸洗,顯示不同的圖片
4>還可以讓label在不同的螢幕尺寸下,顯示不同的font
5>符號解釋:
- compact
* any
+ regular
6>注意尺寸的繼承性: any Width | any Height 是Base Values For all layouts,也就是說在any Width | any Height尺寸類型下,給控制項添加的約束會影響到其他尺寸類型.例如下面這兩約束會警示告.
在any Width | any Height 給button添加了和左邊界固定距離的約束,
在compact Width | compact Height 給button添加了和右邊界固定距離的約束,
iOS 螢幕適配之sizeclass