按比例設置寬高,間距大小的問題
1.如果某個視圖是根據父視圖的大小而定讨永,那么可以把按著control鍵,拉一條線到它的父視圖上面夜郁,選擇一個Equia Widths,或者Equia Heights,前者是寬度隨著父視圖的大小而定什燕,后者是高度隨著父視圖而定。
2.如果要做兩個正方形并排放竞端,這時候可以利用它本身自帶的aspact ratio功能屎即,讓其高寬比例是1:1。按著control鍵拉一條線指向它自身事富,這時候就會出現這個選項技俐。
Horizontal Center in Container —> 水平居中約束
Vertical Center in Container —> 垂直居中約束
上面4根線的作用設置距離父控件上下左右距離多少
下面width、height 設置控件自己的大小
托線設置約束
父子之間控件
Leading Space to Container Margin —> Leading Space to Container 距離父控件左邊的間距
Trailing Space to Container Margin == Trailing Space to Container —> 距離父控件右邊邊的間距
Bottom Space to Container
Bottom Space to Container —> 距離父控件下邊的間距
Center Horizontally in Container —> 與父控件水平居中
Center Vertical in Container —> 與父控件垂直居中
兄弟之間控件
Horizontal Spacing —> 相對于兄弟水平間距
Vertical Spacing —> 相對于兄弟豎直間距
Top —> 相對于兄弟上邊距
Center Vertically —> 相對于兄弟垂直中心對齊
Baseline —> 文字距UI控件頂部的偏移量
Bottom —> 相對于兄弟下邊距
Leading \ Left —> 相對于兄弟左邊距
Center Horizontally —> 相對于兄弟水平中心對齊
Trailing \ Right —> 相對于兄弟右邊距
Equal Widths —> 相對于兄弟寬度
Equal Heights —> 相對于兄弟高度
Aspect Ratio —>
Hold Shift To select multiple —> 按住Shift可以選擇多個
Hold Option for alternates —> 按住Option可以替換(不好用)
代碼設置約束
約束添加到who上
如果這個約束只與自己有關统台,那么添加到自己身上
如果這個約束自己與父控件有關雕擂,那么添加到父控件上
如果這個約束自己與其他控件有關系,那么添加到他們公共父輩的控件上
NslayoutConstraint *constraint = [NSlayoutConstraint constraintWithItem:view1 attribute:attr1 relatedBy:relation toItem:view2 attribute: attr2 multiplier:multiplier constant:c];
view1 : 要約束的view
attr1 : 那個屬性(x, y, width, height)
NSLayoutAttributeLeft —> 左
NSLayoutAttributeRight —> 右
NSLayoutAttributeTop —> 上
NSLayoutAttributeBottom —> 下
NSLayoutAttributeLeading —> 左
NSLayoutAttributeTrailing —> 右
NSLayoutAttributeWidth —> 寬度
NSLayoutAttributeHeight —> 高度
NSLayoutAttributeCenterX —> 中心點X
NSLayoutAttributeCenterY —> 中心點Y
NSLayoutAttributeBaseline —> 基本線
NSLayoutAttributeLastBaseline —> 同 NSLayoutAttributeBaseline
NSLayoutAttributeFirstBaseline —> 第一條基本線
iOS8 新增約束
NSLayoutAttributeLeftMargin —> 左邊距
NSLayoutAttributeRightMargin —> 右邊距
NSLayoutAttributeTopMargin —> 上邊距
NSLayoutAttributeBottomMargin —> 下邊距
NSLayoutAttributeLeadingMargin —> 左邊距
NSLayoutAttributeTrailingMargin —> 右邊距
NSLayoutAttributeCenterXWithinMargins —> 中心X邊距
NSLayoutAttributeCenterYWithinMargins —> 中心Y邊距
NSLayoutAttributeNotAnAttribute —> 沒有邊距
relation : 約束關系
NSLayoutRelationLessThanOrEqual <=
NSLayoutRelationEqual ==
NSLayoutRelationGreaterThanOrEqual >=
view2 : 參照的view
attr2 : 參照的屬性(x, y, width, height)
multiplier : 倍數關系
c : 額外的值, 在倍數之外的值
view1.attr1 relation(= or < or >) view2.attr2 * multiplier(倍數) + c
注意:1.一定先有父控件贱勃,再添加約束井赌,否則會報錯誤.
// 使用約束一定要設置這個值,禁止系統(tǒng)把AutoresizingMask的一些設置轉換成Autolayout
2. self.view1.translatesAutoresizingMaskIntoConstraints = NO;