一 常用方法介紹
?masonry 自動幫我們把 autoresizing給禁用掉
這兩個(gè)宏定義要放到導(dǎo)入頭文件之前
//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
// 導(dǎo)入頭文件
#import "Masonry.h"
創(chuàng)建約束 ? ? ?makeConstraints:
更新約束 (只會對指定的約束進(jìn)行更新) ? ? ? ??updateConstraints:
重設(shè)約束 (是會把之前的約束都清空掉, 然后應(yīng)用新的約束) ? ? ? ??remakeConstraints:
優(yōu)先級的設(shè)置 ? ? ? ? ? ?make.height.equalTo(40).priority(10);
二 使用示例
#define kSmallMargin5
?// remakeConstraints ? 如果在之前設(shè)置過有沖突,就用這個(gè)方法重置
第一種方式
[redView mas_makeConstraints:^(MASConstraintMaker *make) {
// make就相當(dāng)于redView,要做約束的時(shí)候,都需要針對make來做
//頂部的約束
make.top.mas_equalTo(self.view.mas_top).offset(20);
//右側(cè)的約束
make.right.mas_equalTo(self.view.mas_right).offset(-20);
//左側(cè)的約束
make.left.mas_equalTo(self.view.mas_left).offset(20);
//高度的約束
make.height.mas_equalTo(40);
}];
第二種方式
如果被約束view的屬性和參照view的屬性一致的話,就可以把參照view的屬性給省略掉
equalTo() :不能自動轉(zhuǎn)換類型(自動裝箱)
[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不會自動的把基本數(shù)據(jù)類型,轉(zhuǎn)為id
make.height.equalTo(@40);
}];
第三種方式
如果被約束的view和參照view是父子關(guān)系,可以把參照view給省略掉(屬性也要一致)
[redView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.offset(20);
make.left.offset(20);
make.right.offset(-20);
make.height.equalTo(@40);
}];
第四種方式
如果不同屬性設(shè)置的約束是相同的,就可以通過.語法進(jìn)行鏈接
[redView mas_makeConstraints:^(MASConstraintMaker *make) {
//make.top.left.offset(20);
make.top.and.left.offset(20);
make.right.offset(-20);
make.height.equalTo(@40);
}];
第五種寫法
可以針對內(nèi)邊距進(jìn)行設(shè)置
[redView mas_makeConstraints:^(MASConstraintMaker *make) {
NSValue *edges = [NSValue valueWithUIEdgeInsets:UIEdgeInsetsMake(20, 20, 20, 20)];
make.edges.equalTo(edges);
}];
第六種寫法
一旦定義完之后,就可以實(shí)現(xiàn)類型的自動轉(zhuǎn)換
#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);
}];