# Masonry
# 不建议使用masonry
## `viewForHeaderInSection` 里面的视图,没法自动布局
此处为tableView的组头view,注意,此处组头view要使用frame来进行布局,不能使用Masonry约束布局。
原因:组头view本身所属于tableView,并没有兄弟/父子视图关系,使用Masonry进行约束布局,只能作用于父子/兄弟视图间。
我是这么理解的,可能理解有误,在这里我只是提醒一下,不能使用Masonry对组头视图布局,组尾视图是一样的道理。
**
## 父视图是ScrollView
如果你的项目,父视图是ScrollView,那么我建议你,还是不要用Masonry。scrollView自身就是有约束设置的,再用Masonry进行子视图的约束,子视图的约束将会失效,当然如果你有很长的时间来研究scrollView自身约束和Masonry库约束的冲突的话(这里姑且让我用冲突这个词语吧),那你可以肆无忌惮的使用Masonry库了。
参考:http://blog.csdn.net/a645258072/article/details/51283135
***
使用方法
约束视图对象只有在被`addSubview`之后,才能给视图添加约束
- 新方法:2个或2个以上的控件等间隔排序
```
/**
* 多个控件固定间隔的等间隔排列,变化的是控件的长度或者宽度值
*
* @param axisType 轴线方向
* @param fixedSpacing 间隔大小
* @param leadSpacing 头部间隔
* @param tailSpacing 尾部间隔
*/
- (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType
withFixedSpacing:(CGFloat)fixedSpacing l
eadSpacing:(CGFloat)leadSpacing
tailSpacing:(CGFloat)tailSpacing;
/**
* 多个固定大小的控件的等间隔排列,变化的是间隔的空隙
*
* @param axisType 轴线方向
* @param fixedItemLength 每个控件的固定长度或者宽度值
* @param leadSpacing 头部间隔
* @param tailSpacing 尾部间隔
*/
- (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType
withFixedItemLength:(CGFloat)fixedItemLength
leadSpacing:(CGFloat)leadSpacing
tailSpacing:(CGFloat)tailSpacing;
```
使用方法很简单,因为它是NSArray的类扩展:
```
// 创建水平排列图标 arr中放置了2个或连个以上的初始化后的控件
// alongAxis 轴线方向 固定间隔 头部间隔 尾部间隔
[arr mas_distributeViewsAlongAxis:MASAxisTypeHorizontal withFixedSpacing:20 leadSpacing:5 tailSpacing:5];
[arr mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(@60);
make.height.equalTo(@60);
}];
```
场景五、多个view一起布局(以组为单位布局)
效果:
![img](http://images2015.cnblogs.com/blog/527522/201510/527522-20151026170842185-1992793891.png)
```
- (instancetype)init {
self = [super init];
if (self) {
NSArray *strArr = @[@"10",@"20",@"50",@"100",@"200",@"300"];
NSMutableArray *mutableArr = [[NSMutableArray alloc] initWithCapacity:6];
for (int i=0; i<3; i++) {
UIButton *button = [[UIButton alloc] init];
[button setTitle:strArr[i] forState:UIControlStateNormal];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
button.layer.borderColor = [UIColor blackColor].CGColor;
[button addTarget:self action:@selector(show:) forControlEvents:UIControlEventTouchUpInside];
button.layer.borderWidth = 2;
[self addSubview:button];
[mutableArr addObject:button];
}
[mutableArr mas_distributeViewsAlongAxis:MASAxisTypeHorizontal withFixedSpacing:20 leadSpacing:20 tailSpacing:20];
[mutableArr mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(@120);
make.height.equalTo(@75);
}];
/**
* -----------------------
*/
NSMutableArray *marr = [NSMutableArray new];
for (int i=3; i<6; i++) {
UIButton *button = [[UIButton alloc] init];
[button setTitle:strArr[i] forState:UIControlStateNormal];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
button.layer.borderColor = [UIColor blackColor].CGColor;
[button addTarget:self action:@selector(show:) forControlEvents:UIControlEventTouchUpInside];
button.layer.borderWidth = 2;
[self addSubview:button];
[marr addObject:button];
}
[marr mas_distributeViewsAlongAxis:MASAxisTypeHorizontal withFixedSpacing:20 leadSpacing:20 tailSpacing:20];
[marr mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(@200);
make.height.equalTo(@75);
}];
}
return self;
}
```