###1、屏幕適配 iOS的屏幕適配能夠分爲3大塊,表明着不一樣時期的屏幕適配主流:html
AutoResizing:
在iOS6以前,徹底可以勝任,由於當時蘋果只有3.5寸屏,加上比較少的支持橫屏,它有很是大的侷限性:只能相對於父控件佈局
AutoLayout:
在iOS6以後,蘋果多了幾個尺寸屏幕,AutoResizing已經無能爲力了,這時候蘋果推出了AutoLayout,功能十分強大,能夠再任意兩個控件之間創建佈局關係,也是如今的主流。SizeClass:
隨着iOS8系統的發佈,一個全新的頁面UI佈局概念出現了,顛覆了以前版本的UI佈局方式,這個特性就是SizeClass,SizeClass配合AutoLayout能夠解決全部iOS設備屏幕UI適配問題下面咱們來一個一個瞭解,由於涉及到UI佈局,可能圖片或者GIF比較多,你們要有心理準備。xcode
###2、AutoResizing【iOS6以前使用】 這個已經被時代所淘汰的界面UI適配方式,如今就只是簡單的瞭解下,也好爲下面的AutoLayout出現說明時代背景。 AutoResizing
的功能只能相對於父控件佈局:bash
在用
autoResizing
的時候須要關閉autoLayout
和sizeclass
(若是是用xcode6) 他們之間是互相沖突的iphone
######上面有6根線,分別對應下方的6個枚舉:佈局
typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {
UIViewAutoresizingNone = 0,
UIViewAutoresizingFlexibleLeftMargin = 1 << 0,
UIViewAutoresizingFlexibleWidth = 1 << 1,
UIViewAutoresizingFlexibleRightMargin = 1 << 2,
UIViewAutoresizingFlexibleTopMargin = 1 << 3,
UIViewAutoresizingFlexibleHeight = 1 << 4,
UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};
複製代碼
- 四周4根線是用來設置當前View距離父控件的上下左右的距離是否固定
能夠看到,上面的設置只能設置當前控件和父控件之間的佈局,沒法實現兄弟控件之間的佈局,例如:若是我想讓2個控件View之間的間隔固定,使用AutoResizing
是沒法實現的。學習
###2、AutoLayout【iOS6以後使用】 由於AutoResizing的種種侷限已經沒法知足iOS6以後新出的不一樣尺寸屏幕的需求,作iOS開發的好處就是有一個很好的東家,蘋果不只很重視用戶體驗,並且對開發者也很友好,例如ARC、AutoLayout。 AutoLayout是如今使用的主流屏幕適配方式,它能夠在任意兩個控件之間創建佈局關係,能夠是父子View,也能夠是兄弟View,功能強大不少,學習成本也高了很多。 ######使用AutoLayout: 字體
######AutoLayout設置界面有3個:
- 對齊佈局界面
####1. 對齊佈局界面: 點擊右下角的相似樓梯的按鈕 ui
######能夠分爲3個功能部分:spa
- 上面4個是控件邊界對齊佈局
上面7個對齊佈局,須要選擇多個View進行設置。3d
####2. 相對佈局界面 點擊右下角的正方形按鈕
######分爲4個功能部分:
- 最上面的是相對附近控件距離設置
####3. 約束管理界面 點擊右下角的小三角按鈕:
######分爲2個大功能區域:
- 分割線上面的是選中View的約束管理,最經常使用的是
Updata Frames
Updata Frames
####4. 經過control按鍵配合拖線也能夠作AutoLayout
####5. 修改約束 界面右邊會有約束列表:
雙擊其中一個約束,進入修改約束界面: ######大概意思能夠理解爲:FirstItem = SecondItem * Multiplier + Constant
view1.width = view2.width * 1 + 0
-> view1.width = view2.width
複製代碼
###3、AutoLayout實踐
######AutoLayout實踐例子說明:
- 兩個View等寬等長
######最終效果圖:
####1. 設置2個View等寬等高
####2. 設置藍色View左右距離 ####3. 設置藍色View到父控件中心Y軸的距離 ####4. 設置紅色View到父控件中心Y軸的距離【記住是負的】 ####5. 設置紅色View左右距離 ####6. 設置藍色View的高度 ####7. 使用更新界面 ####8. 最終效果###4、SizeClass SizeClass就是對屏幕尺寸進行了抽象,再也不拘泥於具體的尺寸,由於尺寸一直都在變化,若是咱們按照尺寸去適配,必定會很累。 ######SizeClass對屏幕進行了抽象分類:
- compact:緊湊-小
######總結幾點:
SizeClass
只是對屏幕進行了抽象分類,具體屏幕適配仍是要使用AutoLayout
來進行。
因此使用了SizeClass的Xcode的storyboard變成了這個樣子:
下方還變成了這樣: 具體解析看下圖: 好比iPhone的豎屏,它是這麼抽象的:###5、SizeClass使用實例 ######之前看來有這樣一個變態的要求:
有個View是100*100的,在iPhone豎屏是居於左上角,橫屏時在右下角,是iPad時它在正中間
#####如今用SizeClass能夠簡單實現: ######處理iPhone豎屏: 先用SizeClass固定屏幕爲iPhone豎屏:compactWith | RegularHeight
除了這個,iOS8加了SizeClass後,一些控件也多了一些屬性,例如:
在右邊的菜單區域能夠看到:installed,這個是用來控制改控件什麼狀況下顯示,當前什麼都沒約束,表示Any * Any,就是不論是iphone什麼尺寸仍是ipad什麼尺寸均可以顯示,點擊左邊的小加號+能夠用sizeclass控制什麼狀況顯示;一樣的還有字體、圖片顯示:
#####看完是否是以爲原來storyboard能夠這麼玩!(^o^)/~ #####該筆記大部份內容來自:博客園 隨遇不安的博客,感謝他的分享。
#####有什麼問題能夠在下方的評論區提出,O(∩_∩)O哈!