NSLayoutConstraint小记

来源:互联网 发布:淘宝卖家贴吧怎么引流 编辑:程序博客网 时间:2024/05/16 05:56

就是给自己做个笔记,有个印象~


一个NSLayoutConstraint对象就代表一个约束

创建约束对象的常用方法
+(id)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c;
view1 :要约束的控件
attr1 :约束的类型(做怎样的约束)
relation :与参照控件之间的关系
view2 :参照的控件
attr2 :约束的类型(做怎样的约束)
multiplier :乘数
c :常量


自动布局有个核心公式
obj1.property1 =(obj2.property2 * multiplier)+ constant value


来个简单的例子:

在屏幕中心创建一个view

    UIView *blueView = [[UIView alloc]init];    blueView.backgroundColor = [UIColor blueColor];    [self.view addSubview:blueView];        blueView.translatesAutoresizingMaskIntoConstraints = NO;        NSLayoutConstraint * width = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:100];    [blueView addConstraint:width];        NSLayoutConstraint * height = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:100];    [blueView addConstraint:height];        NSLayoutConstraint * centerX = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0];    [self.view addConstraint:centerX];        NSLayoutConstraint * centerY = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:0];    [self.view addConstraint:centerY];

                                                 


例子2

    UIView *blueView = [[UIView alloc]init];    blueView.backgroundColor = [UIColor blueColor];    [self.view addSubview:blueView];        UIView *redView = [[UIView alloc]init];    redView.backgroundColor = [UIColor redColor];    [self.view addSubview:redView];        blueView.translatesAutoresizingMaskIntoConstraints = NO;    redView.translatesAutoresizingMaskIntoConstraints = NO;        NSLayoutConstraint * blueHeight = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:40];    [blueView addConstraint:blueHeight];        //间距    CGFloat margin = 20;    NSLayoutConstraint * blueLeft = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1.0 constant:margin];    [self.view addConstraint:blueLeft];        NSLayoutConstraint * blueTop = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0 constant:margin];    [self.view addConstraint:blueTop];        NSLayoutConstraint * blueRight = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1.0 constant:-margin];    [self.view addConstraint:blueRight];        //红色    NSLayoutConstraint * redRight = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeRight multiplier:1.0 constant:0];    [self.view addConstraint:redRight];        NSLayoutConstraint * redHeight = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeHeight multiplier:1.0 constant:0];    [self.view addConstraint:redHeight];        NSLayoutConstraint * redTop = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:margin];    [self.view addConstraint:redTop];        NSLayoutConstraint * redWidth = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeWidth multiplier:0.5 constant:0];    [self.view addConstraint:redWidth];

                                                 


例子3

    UIView *blueView = [[UIView alloc]init];    blueView.backgroundColor = [UIColor blueColor];    [self.view addSubview:blueView];        UIView *redView = [[UIView alloc]init];    redView.backgroundColor = [UIColor redColor];    [self.view addSubview:redView];        blueView.translatesAutoresizingMaskIntoConstraints = NO;    redView.translatesAutoresizingMaskIntoConstraints = NO;        NSLayoutConstraint *blueHeight = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:80];    [blueView addConstraint:blueHeight];        NSLayoutConstraint *blueLeft = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1.0 constant:20];    [self.view addConstraint:blueLeft];            NSLayoutConstraint *blueTop = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTopMargin multiplier:1.0 constant:20];    [self.view addConstraint:blueTop];        NSLayoutConstraint *blueWidth = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeWidth multiplier:1.0/3*2 constant:-30];    [self.view addConstraint:blueWidth];                NSLayoutConstraint *redHeight = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeHeight multiplier:1.0 constant:0];    [self.view addConstraint:redHeight];        NSLayoutConstraint *redRight = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1.0 constant:-20];    [self.view addConstraint:redRight];            NSLayoutConstraint *redTop = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeTop multiplier:1.0 constant:0];    [self.view addConstraint:redTop];                NSLayoutConstraint *redWidth = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeWidth multiplier:0.5 constant:0];    [self.view addConstraint:redWidth];

                                                 

0 0