Masonry是一款強(qiáng)大iOS第三方約束類庫副女。
它的內(nèi)部原理是什么呢妥曲!
它充分的利用了鏈?zhǔn)骄幊趟枷牒秃瘮?shù)式編程思想進(jìn)行編程!所有屬性都是通過使用點(diǎn)語法來點(diǎn)出來古毛!
它通過調(diào)用Block來進(jìn)行編程:通過一個(gè)Mas_makeConstraints:^(NSconstraintsMaker *make)block;
這個(gè)masonry 主要是通過這個(gè)約束制造者來進(jìn)行約束翻翩!
通過調(diào)用這個(gè)Block然后去去內(nèi)部調(diào)用下一級(jí)!
Masonry主要稻薇,通過這個(gè)Block 的調(diào)用嫂冻!需要注意的是!在我們使用Masonry的時(shí)候Masonry會(huì)幫我們做一件事塞椎,會(huì)把系統(tǒng)的translatesAutoresizingMaskConstraints設(shè)置為NO!
Masonry 在內(nèi)部會(huì)首先幫我們創(chuàng)建一個(gè)約束制造者桨仿!
然后在調(diào)用Block(constraintMaker)
- (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *))block {
self.translatesAutoresizingMaskIntoConstraints = NO;
MASConstraintMaker *constraintMaker = [[MASConstraintMaker alloc] initWithView:self];
block(constraintMaker);
return [constraintMaker install];
}
也就是這個(gè)方法,它會(huì)返回一個(gè)數(shù)組案狠。把我們外面寫好的約束數(shù)組給我們返回到內(nèi)部然后進(jìn)行處理!
它的具體步驟是:
- 首先會(huì)創(chuàng)建一個(gè)約束制造者然服傍,并且綁定控件!
- 執(zhí)行mas_makeConstraints:傳入進(jìn)行Block
- 讓約束制造者安裝約束骂铁!
安裝的時(shí)候步驟是:
1伴嗡、首先會(huì)清除以前的約束
2、然后把傳入數(shù)組遍歷一遍然吧吧約束安裝