必要的一条:
要使用NSLayoutConstraint必须设置translatesAutoresizingMaskIntoConstraints为NO;
例:
// 1 : 创建一个黄色的View
UIView *yellowView = [[UIView alloc]init];
yellowView.backgroundColor = [UIColor yellowColor];
// 2 : 注意首先要添加到subView里面
[self.view addSubview:yellowView];
// 3 : 取消黄色View的autoresizing
// YES 代表使用autoresizing 如果食用autolayout需要设置为NO
yellowView.translatesAutoresizingMaskIntoConstraints = NO;
// 4 : 设置约束
/**
1).WithItem 代表的是需要设置约束的空间(yellowView)
2).attribute 代表的是要做约束的那一条线
NSLayoutAttributeLeft = 1,//左侧
NSLayoutAttributeRight,//右侧
NSLayoutAttributeTop,//上方
NSLayoutAttributeBottom,//下方
NSLayoutAttributeLeading,//首部
NSLayoutAttributeTrailing,//尾部
NSLayoutAttributeWidth,//宽度
NSLayoutAttributeHeight,//高度
NSLayoutAttributeCenterX,//X轴中心
NSLayoutAttributeCenterY,//Y轴中心
NSLayoutAttributeBaseline,//文本底标线
NSLayoutAttributeNotAnAttribute = 0//没有属性
3).relatedBy 比较的方式 =(NSLayoutRelationEqual) <=(NSLayoutRelationLessThanOrEqual) >=(NSLayoutRelationGreaterThanOrEqual)
4).toItem 代表的是被比较的控件
5).attribute 代表的是被比较的控件的比较的位置
*/
// 4.1 : 设置距离上方
NSLayoutConstraint *yellowViewTop = [NSLayoutConstraint constraintWithItem:yellowView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1 constant:100];
[self.view addConstraint:yellowViewTop];
// 4.2 : 设置距离左边
NSLayoutConstraint *yellowViewLeft = [NSLayoutConstraint constraintWithItem:yellowView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1 constant:100];
[self.view addConstraint:yellowViewLeft];
// 4.3 : 设置宽度
// 注意:设置自身的宽高,不需要设置toItem对象,直接传入nil
NSLayoutConstraint *yellowWidth = [NSLayoutConstraint constraintWithItem:yellowView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeWidth multiplier:1 constant:100];
// 注意: 约束添加到哪个对象身上
[yellowView addConstraint:yellowWidth];
// 4.4 : 设置高度
NSLayoutConstraint *yellowHeight = [NSLayoutConstraint constraintWithItem:yellowView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeHeight multiplier:1 constant:100];
[yellowView addConstraint:yellowHeight];
效果如图:
*建议使用第三方插件Masonry(github即可下载)
*简化代码如下
// 1 : 创建一个黄色的View
UIView *yellowView = [[UIView alloc]init];
yellowView.backgroundColor = [UIColor yellowColor];
// 2 : 注意首先要添加到subView里面
[self.view addSubview:yellowView];
// 3 : 设置约束
[yellowView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.left.mas_equalTo(100);
make.height.width.mas_equalTo(100);
}];