代码自动布局

2019-01-17  本文已影响11人  扣肉快快跑

方法一:

<#约束视图#>.translatesAutoresizingMaskIntoConstraints = NO;
[<#约束视图的父视图#> addConstraint:[NSLayoutConstraint constraintWithItem:<#约束视图#> attribute:<#约束视图的NSLayoutAttribute#> relatedBy:<#NSLayoutRelation#> toItem:<#参考视图#> attribute:<#参考视图的NSLayoutAttribute#> multiplier:<#约束视图的NSLayoutAttribute相对于参考视图的NSLayoutAttribute的倍数#> constant:<#约束基础上的额外量#>]];
/*
     第一个参数:约束视图view1
     第二个参数:约束视图view1的attribute属性
     第三个参数:指定约束视图和参考视图的关系relation
     第四个参数:参考视图view2(可以为空)
     第五个参数:参考视图view2的attribute属性
     第六个参数:视图view1的指定属性是参照视图view2指定属性的多少倍
     第七个参数:视图view1的指定属性需要加的浮点数
     */
+(instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(nullable id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c

例子:

UIView *view = [[UIView alloc] init];
    view.backgroundColor = [UIColor orangeColor];
    [self.view addSubview:view];
    view.translatesAutoresizingMaskIntoConstraints = NO;
    
    //二分之一宽(父视图调用addConstraint)
    [self.view addConstraint:[NSLayoutConstraint constraintWithItem:view attribute:(NSLayoutAttributeWidth) relatedBy:(NSLayoutRelationEqual) toItem:self.view attribute:NSLayoutAttributeWidth multiplier:0.5 constant:0]];
    //二分之一高
    [self.view addConstraint:[NSLayoutConstraint constraintWithItem:view attribute:(NSLayoutAttributeHeight) relatedBy:(NSLayoutRelationEqual) toItem:self.view attribute:NSLayoutAttributeHeight multiplier:0.5 constant:0]];
    //垂直对齐
    [self.view addConstraint:[NSLayoutConstraint constraintWithItem:view attribute:(NSLayoutAttributeCenterX) relatedBy:(NSLayoutRelationEqual) toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1 constant:0]];
    //水平对齐
    [self.view addConstraint:[NSLayoutConstraint constraintWithItem:view attribute:(NSLayoutAttributeCenterY) relatedBy:(NSLayoutRelationEqual) toItem:self.view attribute:NSLayoutAttributeCenterY multiplier:1 constant:0]];

NSLayoutAttribute枚举说明:

NSLayoutAttributeLeft:视图的左边
NSLayoutAttributeRight:视图的右边
NSLayoutAttributeTop:视图的上边
NSLayoutAttributeBottom:视图的底边
NSLayoutAttributeLeading:在习惯有左向右看的地区,相当于NSLayoutAttributeLeft;在习惯有右向左看的地区,相当于NSLayoutAttributeRight
NSLayoutAttributeTrailing:在习惯有左向右看的地区,相当于NSLayoutAttributeRight;在习惯有右向左看的地区,相当于NSLayoutAttributeLeft
NSLayoutAttributeWidth:视图的宽度
NSLayoutAttributeHeight:视图的高度
NSLayoutAttributeCenterX:视图的中心x轴
NSLayoutAttributeCenterY:视图的中心y轴
NSLayoutAttributeLastBaseline:相当于NSLayoutAttributeBaseline
NSLayoutAttributeBaseline:文本底标线,在大多数视图中等同于NSLayoutAttributeBottom;在少数视图,如UILabel,是指字母的底部出现的位置
NSLayoutAttributeLastFirstline:文本上标线,在大多数视图中等同于NSLayoutAttributeTop;在少数视图,如UILabel,是指字母的上部出现的位置
NSLayoutAttributeNotAnAttribute:没有

NSLayoutRelation 枚举说明

NSLayoutRelationLessThanOrEqual 视图关系小于或等于
NSLayoutRelationEqual      视图关系等于
NSLayoutRelationGreaterThanOrEqual      视图关系大于或等于

注意:

上一篇 下一篇

猜你喜欢

热点阅读