仿Masonry的一个库


研究了下Masonry的代码,发现这个库写的非常巧妙,其很好的通过Block封装了一个链式调用系统。

我这里写了一个类似于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的一个简单实现,想研究Masonry源码的可以看看。

你可能感兴趣的:(仿Masonry的一个库)