纯代码创建约束如下:
- (void)viewDidLoad {
[super viewDidLoad];
//OC专门为开发者封装了一个类NSLayoutConstraint来帮助开发者描述布局
/**
* view1.attr1 = view2.attr2 * multiplier + constant
* 视图1.属性1 关系 视图2.属性2 * 缩放比例 + 偏移量
* item:约束中的两个视图对象
* attribute:描述视图对齐特征
* relatedBy:描述两个视图的attribute关系
* toItem:
* attribute:
* multiplier:缩放比例
* constant:偏移量
*/
// [NSLayoutConstraint constraintWithItem:<#(nonnull id)#> attribute:<#(NSLayoutAttribute)#> relatedBy:<#(NSLayoutRelation)#> toItem:<#(nullable id)#> attribute:<#(NSLayoutAttribute)#> multiplier:<#(CGFloat)#> constant:<#(CGFloat)#>];
//创建一个view1视图
UIView *view1 = [UIView new];
view1.backgroundColor = [UIColor redColor];
// view1.frame = CGRectMake(100, 100, 100, 100);
//启动自动布局
//iOS6之后出现AutoLayout布局,用于取代原先的Autoresizing系统的布局方式
view1.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:view1];
//与view左边对齐
NSLayoutConstraint *constraint1 = [NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1 constant:100];
[self.view addConstraint:constraint1];
//与view顶部对齐
NSLayoutConstraint *constraint2 = [NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1 constant:100];
[self.view addConstraint:constraint2];
//view1宽度
NSLayoutConstraint *constraint3 = [NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeWidth multiplier:1 constant:100];
[self.view addConstraint:constraint3];
//view1高度
NSLayoutConstraint *constraint4 = [NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeHeight multiplier:1 constant:100];
[self.view addConstraint:constraint4];
//创建一个view2视图
UIView *view2 = [UIView new];
view2.backgroundColor = [UIColor greenColor];
view2.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:view2];
//左侧与view对齐
NSLayoutConstraint *constraint5 = [NSLayoutConstraint constraintWithItem:view2 attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1 constant:200];
[self.view addConstraint:constraint5];
//与view顶部对齐
NSLayoutConstraint *constraint6 = [NSLayoutConstraint constraintWithItem:view2 attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1 constant:200];
[self.view addConstraint:constraint6];
//view2宽度
NSLayoutConstraint *constraint7 = [NSLayoutConstraint constraintWithItem:view2 attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:view1 attribute:NSLayoutAttributeWidth multiplier:0.5 constant:0];
[self.view addConstraint:constraint7];
//view2高度
NSLayoutConstraint *constraint8 = [NSLayoutConstraint constraintWithItem:view2 attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:view1 attribute:NSLayoutAttributeHeight multiplier:0.5 constant:0];
[self.view addConstraint:constraint8];
}