iOS开发Masonry自动布局注意事项

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)

你可能感兴趣的:(iOS开发Masonry自动布局注意事项)