由於本人也是才開始學習自動布局,所以可能會出現錯誤,請大家多多包含,並指出錯誤
關於自動布局,現在很多介紹用xib和storyboard,但是純代碼使用Autolayout越來越少了
下面主要大概的介紹下這幾天學習純代碼使用Autolayout的一些可能有用的東西吧。
首先先創建3個UIView
並對view進行初始化
在使用自動布局之前要對子視圖的布局方式進行調整,用到
translatesAutoresizingMaskIntoConstraints這個UIView的屬性,並且把它設置為no
OK!前期的准備工作已經做完,下面開始就要進入正題
首先我們要達到這樣的效果
有3種方式
1.使用VFL語言添加約束
2.一個一個的添加約束
3.一組一組的添加約束
一.使用VFL語言添加約束
添加完這些約束運行程序,就達到開始的效果
注釋:
|: 表示父視圖
-:表示距離
V: :表示垂直
H: :表示水平
>= :表示視圖間距、寬度和高度必須大於或等於某個值
<= :表示視圖間距、寬度和高度必須小宇或等於某個值
== :表示視圖間距、寬度或者高度必須等於某個值
@ :>=、<=、== 限制 最大為 1000
1.|-[view]-|: 視圖處在父視圖的左右邊緣內
2.|-[view] : 視圖處在父視圖的左邊緣
3.|[view] : 視圖和父視圖左邊對齊
4.-[view]- : 設置視圖的寬度高度
5.|-30.0-[view]-30.0-|: 表示離父視圖 左右間距 30
6.[view(200.0)] : 表示視圖寬度為 200.0
7.|-[view(view1)]-[view1]-| :表示視圖寬度一樣,並且在父視圖左右邊緣內
8. V:|-[view(50.0)] : 視圖高度為 50
9: V:|-(==padding)-[imageView]->=0-[button]-(==padding)-| : 表示離父視圖的距離
為Padding,這兩個視圖間距必須大於或等於0並且距離底部父視圖為 padding。
10: [wideView(>=60@700)] :視圖的寬度為至少為60 不能超過 700
11: 如果沒有聲明方向默認為 水平 V:
2.一個一個的添加約束
主要使用這個方法
- (void)addConstraint:(NSLayoutConstraint *)constraint;
這樣也能達到使用VFL語言的效果
3.一組一組的添加約束
主要使用這個方法
- (void)addConstraints:(NSArray *)constraints;
以上3種方法都能達到上面的效果,但是大家不難發現,2,3種方法的代碼量遠遠大於第一種,在實際使用中我想大家使用第一種方法。
自適應布局--簡介就介紹到這個地方,以后還會有更加詳細的講解。