iOS:原生代码添加约束(VFL)

|:   表示父视图
     -:  表示距离
     V:  表示垂直
     H:  表示水平
     >=: 表示视图间距、宽度和高度必须大于或等于某个值
     <= :表示视图间距、宽度和高度必须小宇或等于某个值
     == :表示视图间距、宽度或者高度必须等于某个值
     @:  优先级 最大为  1000
     
     |-[view]-|:                          视图处在父视图的左右边缘内
     |-[view]  :                          视图处在父视图的左边缘
     |[view]   :                              视图和父视图左边对齐
     V:[view(100.)]  :                        设置视图的高度
     H:[view(100.)]  :                        设置视图的宽度
     |-30.0-[view]-30.0-|:                表示离父视图 左右间距  30
     |-[view(view1)]-[view1]-| :              View和view1视图宽度一样,并且在父视图内
     V:|-padding-[imageView]->=0-[button]-padding| : 表示离父视图的距离为Padding,这两个视图间距必须大于或等于0并且距离底部父视图为padding。此时必须对 metrics参数赋值eg.  metrics:@{@"topMargin":@100};

     [wideView(>=60@700)]  :视图的宽度为至少为60 优先级为700

注意:由于AutoLayout布局和Autoresizing布局是冲突的,因此要使用AutoLayout必须要关闭Autoresizing

self.view.translatesAutoresizingMaskIntoConstraints = NO;

案例:

    UIView *supView1 = [[UIView alloc] init];
    supView1.backgroundColor =  [UIColor blueColor];
    
    UIView *supView2 = [[UIView alloc] init];
    supView2.backgroundColor =  [UIColor greenColor];

    [self.view addSubview:supView1];
    [self.view addSubview:supView2];
    
    //由于AutoLayout布局和Autoresizing布局是冲突的,因此要使用AutoLayout必须要关闭Autoresizing
    self.view.translatesAutoresizingMaskIntoConstraints = NO;
    supView1.translatesAutoresizingMaskIntoConstraints = NO;
    supView2.translatesAutoresizingMaskIntoConstraints = NO;
    /*
     supView1距离父视图top间距(200)
     supView1的宽度(100)
     底部距离supView2的间距(20)
     的垂直方向的宽度(50)
     supView2的高度(50)
     */
    NSString *top = @"V:|-200-[supView1(100.0)]-20-[supView2(100.0)]";
    /*
     垂直方向: supView1距离父view 左边距(10)宽度(50)
     */
    NSString *left = @"H:|-10-[supView1(50.0)]";
    /*
     supView2宽度(60)
     */
    NSString *v2T = @"[supView2(160.0)]";
    
    
    //此处需要对topMargin参数进行解释, 其实就是给topMargin赋值;
    NSArray *s1T = [NSLayoutConstraint constraintsWithVisualFormat:top options:NSLayoutFormatAlignAllRight metrics:@{@"topMargin":@200} views:NSDictionaryOfVariableBindings(supView1, supView2)];

    NSArray *s1L = [NSLayoutConstraint constraintsWithVisualFormat:left options:0 metrics:nil views:NSDictionaryOfVariableBindings(supView1)];
    NSArray *v2Tc = [NSLayoutConstraint constraintsWithVisualFormat:v2T options:0 metrics:nil views:NSDictionaryOfVariableBindings(supView2)];
    
    //一般需要把约束添加到父view上
    [self.view addConstraints:v2Tc];
    [self.view addConstraints:s1T];
    [self.view addConstraints:s1L];

demo:https://github.com/ITHanYong/VFL.git

你可能感兴趣的:(iOS)