Masonryde 的优点很多,就不多说了,但是在我刚开始使用的时候出现过一些问题,在这里写出来,防止忘记.
第一个就是一定要添加到view上,就是先使用addSubview,不然的话,肯定会崩溃;
第二个就是导航条不要使用Masonry.
第三个就是with和and,内部是把self返回,没有实际意义
- (MASConstraint *)with {
return self;
}
- (MASConstraint *)and {
return self;
}
使用心得(根据GitHub上的demo写的)
一、可以传数组
make.height.equalTo(@[greenView, blueView]);//can pass array of views
效果是高度和数组里的空间相等
二、更新约束
// this is Apple's recommended place for adding/updating constraints
- (void)updateConstraints;
三、重新创建约束
remakeConstraints
四、内边距
make.edges.equalTo(lastView).insets(UIEdgeInsetsMake(5,10,15,20));
五、TableView的自动布局
很简单,
[self.contentView addSubview:self.bgView];
[self.bgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.contentView).offset(10);
// make.height.mas_equalTo(120);
make.left.mas_equalTo(20);
make.right.mas_equalTo(-20);
make.bottom.mas_equalTo(0);
}];
label换行就行,tableview的方法里不要调用
//- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
// UITableViewCell *cell = [self tableView:self.TV cellForRowAtIndexPath:indexPath];
// return cell.frame.size.height;
//}
不用调用就好
// self.branchTV.estimatedRowHeight = 130;
// self.branchTV.rowHeight = UITableViewAutomaticDimension;
这两个方法也可以不写
六、成比例
三分之一
make.height.equalTo(self.bottomInnerView.mas_width).multipliedBy(3);
multipliedBy(3)