研究了下
Masonry
的代碼,發(fā)現(xiàn)這個庫寫的非常巧妙仰泻,其很好的通過Block
封裝了一個鏈式調用系統(tǒng)荆陆。
我這里寫了一個類似于Masonry
的庫,CXLayout
集侯,詳見GitHub被啼,喜歡的朋友可以看一看。
使用方法
Step 1:添加控件
#import "CXLayout.h"
UIView *greenView = UIView.new;
greenView.backgroundColor = [UIColor greenColor];
[self.view addSubview:greenView];
Step 2:添加約束
[greenView CX_AutoLayout:^(CXLayoutManager *mgr) {
mgr.Equal_width(nil,CX_Default,200).height(CX__Default,44).center(CGPointMake(0, - ScreenHeight/2 + 80));
}];
Step 3:更新約束
[greenView CX_AutoLayoutUpdate:^(CXLayoutManager *mgr) {
mgr.equal.size(CGSizeMake(150, 150));
}];
添加約束的時候棠枉,mgr后面跟的約束代碼無需順序浓体,你也可以寫成:
mgr.equal.width(nil,1,200).height(nil,1,44).center(CGPointMake(0, - ScreenHeight/2 + 80));
或者分成多行寫成:
mgr.equal.width(nil,1,200);
mgr.equal.height(nil,1,44);
mgr.equal.center(CGPointMake(0, - ScreenHeight/2 + 80));
其實這個庫只是仿Masonry
的一個簡單實現(xiàn),想研究Masonry
源碼的可以看看辈讶。