Autolayout约束的代码实现方式-1

代码实现方式不比图形界面妥妥拽拽几下那么爽,一根线需要大概3行代码,所以导致一个完整约束的代码量看起来很繁琐。

以下为一个实例,表示一个蓝色的100*100的色块粘着着父控件右下角显示:

    UIView *blueView = [[UIViewalloc]init];

    blueView.backgroundColor = [UIColorblueColor];

    [self.viewaddSubview:blueView];

    blueView.translatesAutoresizingMaskIntoConstraints =NO;

    // 宽度约束:100

    NSLayoutConstraint *widthConstraint = [NSLayoutConstraint constraintWithItem:blueView

attribute:NSLayoutAttributeWidth

relatedBy:NSLayoutRelationEqual

toItem:nil

attribute:NSLayoutAttributeNotAnAttribute

multiplier:0.0

constant:100];

    [blueView addConstraint:widthConstraint];

    // 高度约束:100

    NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:blueView

attribute:NSLayoutAttributeHeight

relatedBy:NSLayoutRelationEqual

toItem:nil

attribute:NSLayoutAttributeNotAnAttribute

multiplier:0.0

constant:100];

    [blueView addConstraint:heightConstraint];

    // 右边约束,距离父控件的右边有10的间距

    NSLayoutConstraint *rightConstraint = [NSLayoutConstraint constraintWithItem:blueView

attribute:NSLayoutAttributeRight

relatedBy:NSLayoutRelationEqual

toItem:self.view

attribute:NSLayoutAttributeRight

multiplier:1.0

constant:-10];

    [self.viewaddConstraint:rightConstraint];

    // 底部约束,距离父控件的底部有10的间距

    NSLayoutConstraint *bottomConstraint = [NSLayoutConstraint constraintWithItem:blueView

attribute:NSLayoutAttributeBottom

relatedBy:NSLayoutRelationEqual

toItem:self.view

attribute:NSLayoutAttributeBottom

multiplier:1.0

constant:-10];

    [self.viewaddConstraint:bottomConstraint];


blueView.translatesAutoresizingMaskIntoConstraints = NO;

这句代码表示如果使用了Autolayout自动布局方式的话,以前的Autoresizing模式下的相关的设定会自动转换成Autolayout模式下的约束,默认情况下是为YES,表示会自动转换,这就会导致下面的4个约束设定有可能会跟自动转换的约束发生冲突,所以每当使用Autolayout自动布局的时候,都应该把这个属性设置为NO。


参数解读:

* constraintWithItem:表示对哪个控件进行约束设置

attribute:设置控件的哪个属性(宽,高,对上,下,左,右的间距)

relatedBy:与下一个对比控件的关系,为等于(equal),大于(greater),小于(less)

toItem:相对于哪一个控件(如果没有设置nil)

attribute:相对的那个控件的哪个属性(如果没有设置NSLayoutAttributeNotAnAttribute

multiplier:乘数

constant:加数


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值