iOS开发之纯代码约束

我们在平时开发中, 大多数的控件都需要进行约束, 约束的方法比较多, 例如autolayout等. 今天我们就来谈谈如何进行纯代码约束.

首先我们来说第一种情况, 假如我们有一个label叫namelabel, 现在我们需要让namelabel距离self.view的上边距100, 距离左边距20.那么我们用纯代码需要这样写.

    //  左
    NSLayoutConstraint * nameLabelLeading = [NSLayoutConstraint constraintWithItem:nameLabel attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1.0 constant:20.f];
//  上
    NSLayoutConstraint * nameLabelTop = [NSLayoutConstraint constraintWithItem:nameLabel attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:0.1f constant:100.f];
        [self.view addConstraints:@[nameLabelLeading,nameLabelTop]];

这样就加上了namelabel的约束, 这三句代码就可以让namelabel距离左边距20 距离上边距100.

还有一种是需要给namelabel一个宽度和高度, 假如和self.view同高同宽.

//  宽
    NSLayoutConstraint * nameLabelWidth = [NSLayoutConstraint constraintWithItem:nameLabel attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0f constant:self.view.bounds.size.width];
//  高
    NSLayoutConstraint * nameLabelHeigth = [NSLayoutConstraint constraintWithItem:nameLabel attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0f constant:self.view.bounds.size.height];

    [self.view addConstraints:@[nameLabelHeigth,nameLabelWidth]];

这三句代码就可以给namelabel一个宽度和高度, 分别是和self.view的宽度和高度相等.
这样就完成了基本的纯代码约束, 是不是很简单呢.

你可能感兴趣的:(iOS开发,移动互联网)