Masonry第三方代码约束

#import "RootViewController.h"
#import "Masonry.h"

@interface RootViewController ()

@end

@implementation RootViewController

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.

#pragma mark - label

// 添加约束,不需要设置frame
UILabel *label = [UILabel new];
label.backgroundColor = [UIColor redColor];

// 添加到父视图上,视图添加完成后才能进行布局
[self.view addSubview:label];


// 布局,显现布局方法
[label mas_makeConstraints:^(MASConstraintMaker *make) {

// 距离上面50
/*
make:相当于要布局的视图
equalTo:参照的视图对象,如果参照视图是self.view,可以不设置参照视图的属性
offset:距离数值
*/
make.top.equalTo(self.view).offset(50);

// 距离左边100
make.left.equalTo(self.view).offset(100);

// 距离右边100
make.right.offset(-100);

// 距离下面500
make.bottom.offset(-500);

}];

#pragma mark - label1

// 添加约束,不需要设置frame
UILabel *label1 = [UILabel new];
label1.backgroundColor = [UIColor greenColor];

// 添加到父视图上,视图添加完成后才能进行布局
[self.view addSubview:label1];


// 先布局参照视图,否则约束容易丢失
[label1 mas_makeConstraints:^(MASConstraintMaker *make) {

// 和label左边一致
// equalTo(自定义的视图),需要设置视图的属性,如果数值为0,可以不写offset()
make.leading.equalTo(label.mas_leading);

// 和label右边一致
make.trailing.equalTo(label.mas_trailing);

// 上边距离label 50
make.top.equalTo(label.mas_bottom).offset(50);

// 高度60
make.height.mas_equalTo(60);

}];

#pragma mark - label2

UILabel *label2 = [[UILabel alloc] init];
label2.backgroundColor = [UIColor orangeColor];
[self.view addSubview:label2];

// [label2 mas_makeConstraints:^(MASConstraintMaker *make) {
//
// make.left.offset(100);
// make.right.offset(-100);
// make.top.offset(400);
// make.bottom.offset(-100);
// }];

// 设置距离参照视图的内边距(上左下右)
UIEdgeInsets padding = UIEdgeInsetsMake(400, 100, 100, 100);

[label2 mas_makeConstraints:^(MASConstraintMaker *make) {

// 设置约束视图的边界距离self.view的边界值
// make.edges.equalTo(self.view).insets(padding);
make.edges.insets(padding);
}];

#pragma mark - label3

UILabel *label3 = [[UILabel alloc] init];
label3.backgroundColor = [UIColor purpleColor];
[self.view addSubview:label3];


[label3 mas_makeConstraints:^(MASConstraintMaker *make) {

// 设置中心点一致
make.center.equalTo(label2);

// 设置大小
// make.width = label2.width - 40
// make.height = label2.height + 60
make.size.equalTo(label2).sizeOffset(CGSizeMake(-40, 60));

}];
}

@end

原文地址:https://www.cnblogs.com/fushengruomeng/p/5558144.html