Masonry在ios10&xcode8下约束问题

从去年8月份正式升级xcode 8.0 开始,就发现一个问题

将原仿写的新浪微博项目在xcode 8下运行,会出现cell重叠的约束冲突问题,但旧项目在xcode 7.3.1下跑完全没有问题,也不会有任何约束冲突的提示

询问了身边的朋友,一直说没遇到,也可能是他们最近没有写过这块,中途忙活忘了,前阵子仿写了个项目,写到自动行高的时候又发现了这个问题,如图:

bs.gif

中途一段时间忙别的事情,再回来处理这个问题的时候跑起来发现更严重了,完全看不出每一个Cell的区域了,于是在往上搜了一下

参考链接1
参考链接2

  • 以前这种自动行高的实现方式:

    • 最底部控件设置相对于contentView的左右上自身高度约束
    • 自定义cell的contentView设置相对于self的上左右及相对于内部最底部控件的底部约束
  • 但是在xocde8&ios10下:

    • 最底部控件设置相对于contentView的左右上自身高度约束基础上+相对于contentView的底部约束
    • 自定义cell的contentView设置相对于self的上下左右四个方向约束
    [self.topic_bottom_toolbar mas_makeConstraints:^(MASConstraintMaker *make) {
        self.topic_bottom_toolbar_top_constraint = make.top.mas_equalTo(self.topic_comment_view.mas_bottom);
        make.left.right.mas_equalTo(self.contentView);
        // xocde 8 + ios 10 约束问题 (此控件高度已经在自定义视图中设置)
        make.bottom.mas_equalTo(self.contentView).mas_offset(-kMargin);
    }];
    [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.left.right.mas_equalTo(self);
        // xocde 8 + ios 10 约束问题
        make.bottom.mas_equalTo(self);
        //make.bottom.mas_equalTo(self.topic_bottom_toolbar).mas_offset(kMargin);
    }];

修复后:

bsr.gif

随着xcode和ios的升级,约束设置要求更加的严谨了

你可能感兴趣的:(Masonry在ios10&xcode8下约束问题)