Masonry使用注意事项

一 常用方法介绍

 masonry 自动帮我们把 autoresizing给禁用掉

这两个宏定义要放到导入头文件之前

//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

// 导入头文件

#import "Masonry.h"

创建约束      makeConstraints:

更新约束 (只会对指定的约束进行更新)         updateConstraints:

重设约束 (是会把之前的约束都清空掉, 然后应用新的约束)         remakeConstraints:

优先级的设置            make.height.equalTo(40).priority(10);

二 使用示例

#define kSmallMargin5

 // remakeConstraints   如果在之前设置过有冲突,就用这个方法重置


第一种方式

[redView mas_makeConstraints:^(MASConstraintMaker *make) {

// make就相当于redView,要做约束的时候,都需要针对make来做

//顶部的约束

make.top.mas_equalTo(self.view.mas_top).offset(20);

//右侧的约束

make.right.mas_equalTo(self.view.mas_right).offset(-20);

//左侧的约束

make.left.mas_equalTo(self.view.mas_left).offset(20);

//高度的约束

make.height.mas_equalTo(40);

}];


第二种方式

如果被约束view的属性和参照view的属性一致的话,就可以把参照view的属性给省略掉

equalTo() :不能自动转换类型(自动装箱)

[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);

// equalTo不会自动的把基本数据类型,转为id

make.height.equalTo(@40);

}];


第三种方式

如果被约束的view和参照view是父子关系,可以把参照view给省略掉(属性也要一致)

[redView mas_makeConstraints:^(MASConstraintMaker *make) {

make.top.offset(20);

make.left.offset(20);

make.right.offset(-20);

make.height.equalTo(@40);

}];


第四种方式

如果不同属性设置的约束是相同的,就可以通过.语法进行链接

[redView mas_makeConstraints:^(MASConstraintMaker *make) {

//make.top.left.offset(20);

make.top.and.left.offset(20);

make.right.offset(-20);

make.height.equalTo(@40);

}];


第五种写法

可以针对内边距进行设置

[redView mas_makeConstraints:^(MASConstraintMaker *make) {

NSValue *edges = [NSValue valueWithUIEdgeInsets:UIEdgeInsetsMake(20, 20, 20, 20)];

make.edges.equalTo(edges);

}];


第六种写法

一旦定义完之后,就可以实现类型的自动转换

#define MAS_SHORTHAND_GLOBALS

[redView mas_makeConstraints:^(MASConstraintMaker *make) {

make.edges.equalTo(UIEdgeInsetsMake(20, 20, 20, 20));

}];

#define MAS_SHORTHAND可以省略掉mas_前缀

[redView makeConstraints:^(MASConstraintMaker *make) {

make.top.left.offset(20);

make.right.offset(-20);

make.height.equalTo(40);

}];

你可能感兴趣的:(Masonry使用注意事项)