適配----Autolayout

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]];

    }

相關文章
相關標籤/搜索