9.3 纯代码添加约束

2019-04-25  本文已影响0人  草根小强
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //使用约束设置视图的位置和大小 frame是没有意义的  或者说约束要比frame优先级高
    UIView *redView = [[UIView alloc]initWithFrame:CGRectZero];
    redView.backgroundColor = [UIColor redColor];
    //translatesAutoresizingMaskIntoConstraints  默认是YES 为了不影响停靠模式对约束的设置,需要将这个属性设置成NO
    redView.translatesAutoresizingMaskIntoConstraints = NO;
    //停靠模式
//    redView.autoresizingMask
    
    UIView *blueView = [[UIView alloc]init];
    blueView.backgroundColor = [UIColor blueColor];
    blueView.translatesAutoresizingMaskIntoConstraints = NO;
    
    [self.view addSubview:redView];
    [self.view addSubview:blueView];
    
    
    //创建约束  NSLayoutConstraint约束类
    NSLayoutConstraint *redHConstraint = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTrailing multiplier:1.0f constant:-50];
    //第一个参数:Item 要添加约束的视图/源视图
    //第二个参数:attribute 源视图的属性 NSLayoutAttributeTrailing右侧
    //第三个参数:relatedBy 和目标视图的关系/和参考视图的关系 NSLayoutRelationEqual等于
    //第四个参数:toItem 参考视图
    //第五个 参数:attribute 参考视图的属性
    //第六个参数:multiplier 比例/倍数
    //第七个参数:constant 约束值
    
    NSLayoutConstraint *redVConstraint = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0f constant:100];
    //NSLayoutAttributeTop 上
    
    NSLayoutConstraint *redWConatraint = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeWidth multiplier:1.0f constant:100];
    //NSLayoutAttributeWidth 宽
    
    NSLayoutConstraint *redtHConstraint = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeHeight multiplier:1.0 constant:50];
    //添加约束
    [self.view addConstraint:redHConstraint];
    [self.view addConstraint:redtHConstraint];
    [self.view addConstraint:redWConatraint];
    [self.view addConstraint:redVConstraint];
    
    
    NSLayoutConstraint *blueHConstraint = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:redView attribute:NSLayoutAttributeLeading multiplier:1.0f constant:-50];
    //右 下 -- 约束值是负数
    //左 上 -- 约束值是整数
    
    NSLayoutConstraint *blueVConstraint = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:redView attribute:NSLayoutAttributeTop multiplier:1.0f constant:-10];
    NSLayoutConstraint *blueWContstraint = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeWidth multiplier:1.0 constant:50];
    NSLayoutConstraint *bluetHConstraint = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeHeight multiplier:1.0 constant:20];
    
    //添加约束 -- 添加一组约束
    [self.view addConstraints:@[blueHConstraint,blueVConstraint,blueWContstraint,bluetHConstraint]];
}
@end
上一篇下一篇

猜你喜欢

热点阅读