代码实行Autolayout

2018-12-06  本文已影响0人  丹丹十个胆小鬼

自动布局的核心计算公式:
obj1.property1 =(obj2.property2 * multiplier)+ constant value

现在要实现一个效果:
一个红色View,宽高都是100,一直在右下角,右边间距20,底部间距20,实现代码如下:

UIView *redView = [[UIView alloc] init];
    redView.backgroundColor = [UIColor redColor];
    // 要先禁止autoresizing功能,设置view的下面属性为NO
    redView.translatesAutoresizingMaskIntoConstraints = NO;
    [self.view addSubview:redView];
    
    /*
     view1 :要约束的控件
     attr1 :约束的类型(做怎样的约束)
     relation :与参照控件之间的关系
     view2 :参照的控件
     attr2 :约束的类型(做怎样的约束)
     multiplier :乘数
     c :常量
     */
    // 一个NSLayoutConstraint对象代表一个约束
    NSLayoutConstraint *width_lc = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:0 constant:100];
    [redView addConstraint:width_lc];
    
    NSLayoutConstraint *height_lc = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:0 constant:100];
    [redView addConstraint:height_lc];
    
    NSLayoutConstraint *right_lc = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTrailing multiplier:1 constant:-20];
    [self.view addConstraint:right_lc];
    
    NSLayoutConstraint *bottom_lc = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1 constant:-20];
    [self.view addConstraint:bottom_lc];

在这里就要考虑一个问题,代码实现的约束要添加到哪一个控件呢?具体规则又是怎样的呢?

上一篇下一篇

猜你喜欢

热点阅读