#import "ViewController.h"
// 解决 mas_
//define this constant if you want to use Masonry without the 'mas_' prefix
#define MAS_SHORTHAND
// 解决 对数据的自动装箱
//define this constant if you want to enable auto-boxing for default syntax
#define MAS_SHORTHAND_GLOBALS
#warning 宏定义一定要 放到 导入头文件之前 , 不然会影响编译
// 导入头文件
#import "Masonry.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
#warning Mansory 会自动的帮我们把autoresizing给关闭
UIView *redView = [[UIView alloc] init];
redView.backgroundColor = [UIColor redColor];
[self.view addSubview:redView];
/**
第一种写法
[redView mas_makeConstraints:^(MASConstraintMaker *make) {
// make 在这里就代表被约束的view
// 顶部
make.top.equalTo(self.view.mas_top).offset(20);
// 设置左侧
make.left.equalTo(self.view.mas_left).offset(20);
// 设置右侧
make.right.equalTo(self.view.mas_right).offset(-20);
// 设置高度 , 这里使用的时候: 装箱
make.height.mas_equalTo(40);
}];
*/
/**
第二种写法
如果被约束view 的属性 和 参照view的属性相同的话可以省略掉
[redView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.view).offset(20);
make.left.equalTo(self.view).offset(20);
make.right.equalTo(self.view).offset(-20);
make.height.mas_equalTo(40);
}];
*/
// 如果想要省略掉 mas_ 导入 #define MAS_SHORTHAND
// [redView makeConstraints:^(MASConstraintMaker *make) {
// make.top.equalTo(self.view).offset(20);
// make.left.equalTo(self.view).offset(20);
// make.right.equalTo(self.view).offset(-20);
// make.height.equalTo(40);
// }];
/**
如果, 被约束view两个属性 的值是相同的, 可以连写
[redView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.left.equalTo(self.view).offset(20);
make.right.equalTo(self.view).offset(-20);
make.height.mas_equalTo(40);
}];
*/
/**
[redView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.mas_equalTo(UIEdgeInsetsMake(20, 20, 20, 20));
}];
*/
// 默认的参照view 就是 自己的父view
[redView makeConstraints:^(MASConstraintMaker *make) {
make.top.left.offset(20);
make.right.offset(-20);
make.height.equalTo(40);
}];
// 蓝色的view
UIView *blueView = [[UIView alloc] init];
blueView.backgroundColor = [UIColor blueColor];
[self.view addSubview:blueView];
[blueView makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(redView.bottom).offset(20);
make.right.equalTo(redView).offset(0);
make.height.equalTo(redView);
make.width.equalTo(redView).multipliedBy(0.5);
}];
/**
更新约束 , 在原有的基础上 , 对要更新的约束进行修改
如果使用 makeConstraints 就会造成约束冲突
[redView updateConstraints:^(MASConstraintMaker *make) {
make.height.equalTo(80);
}];
*/
/**
重新设置约束
把原有的约束都清空掉, 然后设置新的
[redView remakeConstraints:^(MASConstraintMaker *make) {
make.height.equalTo(50);
}];
*/
}