AutLayout 相對佈局,根據參照視圖的位置 來定義本身的位置。經過約束視圖和視圖之間的關係來分配屏幕上的位置,一般與VFL語言配合使用佈局
VFL(visual format language)視覺格式化語言,經過字符串來約束字符和字符之間的關係spa
使用AutLayout必須把translatesAutoresizingMaskIntoConstraints禁用才能夠使用frame 原點 自身的尺寸 來肯定 自身位置。而autoLayout 根據參照視圖的位置 來定義本身的位置orm
autoLayout是相對佈局 約束視圖和視圖之間的關係 來分配 屏幕上的位置字符串
使用VFL(Visual Format Language 視覺格式語言)經過添加字符串 來約束視圖和視圖之間的關係it
使用autoLayout 必須把translatesAutoresizingMaskIntoConstraints禁用才能夠使用io
相對佈局是找一個參照物 拿參照物當作基礎,設置他和參照物的相對距離 來設置本身的位置form
VFL 須有 橫豎 兩個方向的約束基礎
H:表示: 橫向List
V: 表示:豎向layout
| 表示他的父視圖
-50- 表示後面視圖 與前面視圖的距離 (後面視圖是textField,前面視圖是他的父視圖)
[]表示是一個視圖
[textField(>=200)] 要約束視圖的寬 (>=200)容許最小的寬度是200 若是是豎向 就是容許最小的高度
@"H:|-50-[textField(>=200)]-50-|"
距離坐邊原點距離50 右邊邊界距離50 容許視圖的最小寬度是200
使用autoLayout適配的時候以最小尺寸設備 爲基準
/*// VFL 橫向 豎向佈局
// @"H:" 設置橫向佈局
// @"V:" 設置豎向佈局
// 設置橫向佈局 距離參照視圖的左側邊距
// @"H:|-20-"
// @"H:[view]-20-"
// @"H:|-20-[view(200)]" view的寬 永遠是200
// @"H:|-20-[view(otherView)]" view的寬 與otherView的寬相同
// @"H:|-20-[view(>=200)]" 設置橫向佈局 距離參照視圖的左側邊距 設置view橫向的尺寸 不能低於200
// @"H:|-20-[view(>=200)]-20-|" 設置橫向佈局 距離參照視圖的左側邊距 設置view橫向的尺寸 不能低於200 設置右側與參照視圖之間的間距
*/
// 視圖 使用屬性的時候 綁定key 須要綁定它真實的名字 _titleLable
// self.titleLable = _titleLable
下面是代碼:
1.使用Autolayout佈局一個視圖
在viewDidLoad寫入如下代碼:
UIView *view = [[UIView alloc]init];
//使用Autolayout必須禁用translatesAutoresizingMaskIntoConstraints
view.translatesAutoresizingMaskIntoConstraints =NO;
view.backgroundColor =[UIColor redColor];
[self.view addSubview:view];
NSDictionary *views =NSDictionaryOfVariableBindings(view);
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat: @"H:|-20-[view(>=200)]-20-|" options:0 metrics:nil views:views]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[view(>=200)]-20-|" options:0 metrics:nil views:views]];
2.使用Autolayout佈局兩個視圖:
UIView *view = [[UIView alloc]init];
view.translatesAutoresizingMaskIntoConstraints =NO;
view.backgroundColor =[UIColor redColor];
[self.view addSubview:view];
UIView *view1 = [[UIView alloc]init];
view1.translatesAutoresizingMaskIntoConstraints =NO;
view1.backgroundColor =[UIColor yellowColor];
[self.view addSubview:view1];
NSDictionary *views = NSDictionaryOfVariableBindings(view,view1);
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view(>=200)]-20-|" options:0 metrics:nil views:views]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat: @"V:|-40-[view(>=50)]" options:0 metrics:nil views:views]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat: @"H:|-20-[view1(>=200)]-20-|" options:0 metrics:nil views:views]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat: @"V:[view]-10-[view1(50)]" options:0 metrics:nil views:views]];
3.使用Autolayout佈局多個視圖
NSArray *colorList = @[[UIColor redColor],[UIColor yellowColor],[UIColor greenColor]];
for (int i=0; i<3; i++) {
UIView *view =[[UIView alloc]init];
view.backgroundColor = colorList[i];
view.tag = 30+i;
view.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:view];
}
UIView *redColorview = [self.view viewWithTag:30];
UIView *yellowColorview = [self.view viewWithTag:31];
UIView *greenColorview = [self.view viewWithTag:32];
NSDictionary * views = NSDictionaryOfVariableBindings(yellowColorview,redColorview,greenColorview);
NSArray * HList = @[@"H:|-20-[redColorview(>=200)]-20-|",@"H:|-20-[yellowColorview(>=100)]-10-[greenColorview(yellowColorview)]-20-|"];
// 紅色視圖與黃色視圖豎向關係和紅色視圖和綠色視圖豎向關係
NSArray *VList = @[@"V:|-40-[redColorview(50)]-10-[yellowColorview(redColorview)]",@"V:|-40-[redColorview(50)]-10-[greenColorview(redColorview)]"];
for (int i =0; i<VList.count; i++) {
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:HList[i] options:0 metrics:nil views:views]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:VList[i] options:0 metrics:nil views:views]];
}