三大部分:
二:storyboard
三:code to autolayout
一:autolayout簡介
autolayout 是乙個描述各種約束的行為,比如,乙個view 距離父view上邊距多少,相鄰之間的間隔,各個view之間的寬高關係等等
二:storyboard
第一部分:1.什麼是約束以及約束的屬性
2.ib元素的約束列表
3.ib中新增約束的方式
4.優先順序
5.壓縮阻力和內容吸附
6.內建大小
第二部分: 1.sizeclass的簡介
2.sizeclass+autolayout
3.約束安裝和刪除
4.檢視安裝和刪除
autolayout的原理:
自動布局是對autoresizingmask的進一步改進,它允許開發者在介面上的任意兩個檢視之間建立精確的線性變化規則。所謂線性變化就是數學中的一次函式,即:
y = m*x + c
1.什麼是約束:
約束是指用來描述檢視布局的規則,約束限定了事物彼此關聯的方式並且指出如何對他們進行布局。
2.約束的線性關係:
y = m * x + c
y : first item 表示因變數
=:relation 表示相等關係
x : secondeitem 表示自變數
m:multiplier 表示縮放比例係數
c : constant 表示偏移常量
表示子view的頂部和父view的頂部貼合。
ib元素約束列表
ib元素指南
新增約束的方式有:
1.選擇乙個檢視,按下control鍵,從乙個檢視拖拽到另乙個檢視,或者從乙個檢視拖拽到它的父檢視,ib會根據拖拽的方向,顯示出乙個特定上下文的彈出選單。
2.選中一項或者多項,使用xcode上方的editor選單項中的align和pin 項或者xcode編輯器底部右邊工具上的pin和align來新增約束
優先順序:
autolayout通過優先順序規則權衡各布局選項的重要性。設定優先順序的規則,最大的好處是當規則發生突出時,系統會根據優先順序排序來選擇最重要的布局方式。
優先順序預設設定的方式:
250(low) 750(high) 1000(required)
內容吸附:
內容吸附約束限制允許自身伸展和填充檢視的程度。如果內容吸附優先順序較高,則將檢視的框架與內在內容大小相匹配
注意:個人理解一般用在當使用的尺寸變大,同時不希望檢視被拉伸時用
壓縮阻力:
壓縮阻力約束防止檢視剪下內容,確保整個內容都呈現出來 。
注意:個人理解一般用在當使用的尺寸變小時,同時不希望檢視被壓縮剪下時用
內建大小
標籤,影象檢視和控制項的大小通常取決於它們呈現的內容。
sizeclass:
為螢幕的尺寸進行分類 ,通過不同類別的 size 來定製各種尺寸的介面
size classes中的高和寬
size classes為高和寬分別提供了三種型別:緊湊型(compact)、普通型(regular)、任意型(any)。用這三種高和寬的型別就可以組合出9種size class,來表示不同的裝置螢幕。
注意:
在size class為wany/hany的時候新增constraint,在其他size class的時候也生效。其實從字面上也可以看出,any就是任何的意思,compact和regular是any的子類
檢視安裝和刪除
有時候光設定 constraint 是無法滿足比較複雜的需求的,比如大屏下我希望能顯示三個按鈕,分別對應:吃早飯,吃午飯,吃晚飯。但是在 iphone 等小屏下可能放不下這麼多按鈕,只能顯示乙個按鈕:吃飯。遇到這種情況,我們只能對 view 進行安裝 (install) 和解除安裝 (uninstall)。
有時候我們可能會遇到比較複雜的設計,針對不同的尺寸需要有不同的布局
刪除約束的方法:
第一種:如圖,取消勾選
第二種:按住command鍵,同時按下delete鍵
注意:這裡講的約束刪除不是真正意義上的刪除,只是說,在某個size中這個約束不合適使用,在這個size中把約束去掉,但是在其他size中有可能需要這個約束,不能把它給直接delete掉。否則會引起報錯
iOS Autolayout自動布局
在ios程式中,大部分檢視控制器都包含了大量的 用於設定ui布局,設定控制項的水平或垂直位置,以確保元件在不同版本的ios中都能得到合理的布局 甚至有些程式設計師希望在不同的裝置使用相同的檢視控制器,這就給 新增了更多的複雜性!自動布局autolayout的引入很好地解決了這一問題!autolayo...
iOS Auto Layout介面自動布局(1)
ios系統中的自動布局 auto layout 一 檢視定位的基本原理 在平面直角座標系中,要準確描述乙個矩形需要確定以下四個布局屬性 layout attribute 即水平位置x 垂直位置y 寬度w 高度h。只有上述4個布局屬性都確定的情況下,該檢視才能正確顯示在介面中。以上圖為例,如果要將數字...
學習 iOS Autolayout的一點經驗
以下是最近在學習autolayout的過程中學到的一些東西,全出於自己的理解,不對的地方望大家指出。對於普通的檢視uiview來說,想要正確完成檢視的布局,就得建立足夠的約束,普通檢視無法計算自身的寬高,所以在建立約束時,要麼新增關於檢視寬高的約束,要麼新增足夠的其他約束,保證這些檢視可以計算出自身...