美文网首页
使用masonry的一个坑

使用masonry的一个坑

作者: 地上的 | 来源:发表于2018-12-14 14:29 被阅读0次

总结 :在tableview等可复用cell的视图中,在cell上使用masonry进行约束时,如果是绝对参数,则需要进行remake而不是make来进行约束设置。如果使用相对参数进行布局则没问题。

示例:
有一个tableview,上面有cellcell上面有一个UILabel,这个UILabel的高度height是由数据源中计算得来,那么在处理数据源的方法

- (void)configCellWithModel:(GHHomePageRelationSuggestDetailModel *)model {
}

中做这个UILabel的约束时如果采用相对约束:

[_descLabel mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(self.contentView).offset(16);
        make.right.equalTo(self.contentView).offset(-16);
        make.top.equalTo(self.backImageView.mas_bottom).offset(9);
        make.bottom.equalTo(self.contentView).offset(19);
    }];

则没有问题。

如果采用绝对约束:即直接设置高度,而不是设置底部对齐:

[_descLabel mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(self.contentView).offset(16);
        make.right.equalTo(self.contentView).offset(-16);
        make.top.equalTo(self.backImageView.mas_bottom).offset(9);
        make.height.mas_equalTo(model.descSize.height);
    }];

这样由于cell的复用性,在下一次复用这个cell的时候,masonry不会再去重新设置这个height,但是height又由于数据源不一样而需要改变,就导致了显示错误。此时将mas_makeConstraints的方式改为mas_remakeConstraints的方式即可:

[_descLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(self.contentView).offset(16);
        make.right.equalTo(self.contentView).offset(-16);
        make.top.equalTo(self.backImageView.mas_bottom).offset(9);
        make.height.mas_equalTo(model.descSize.height);
    }];

相关文章

  • 自动布局之Masonry

    1.什么是Masonry 2.Masonry中的坑 3.Masonry基础API: 4.一些基本使用 5.Wher...

  • Masonry使用的坑

    v 1.1.0 safeAreaLayoutGuide Crsah #477 iPhone X safeArea ...

  • 使用masonry的一个坑

    总结 :在tableview等可复用cell的视图中,在cell上使用masonry进行约束时,如果是绝对参数,则...

  • Masonry

    Masonry使用方法Masonry的使用Masonry的github地址 本篇文章 Masonry的基本使用方法...

  • Masonry使用方法

    Masonry的使用 Masonry的github地址 Masonry的基本使用方法 给控件添加约束使用Mason...

  • Autolayout-Masonry框架

    一、Masonry简介### Masonry框架是一个使用了优雅语法封装的轻量级layout框架。Masonry有...

  • 10.4 Masonry使用-动画

    Masonry使用-动画 会进行上下缩放 Masonry使用-动画1.png Masonry使用-动画2.png

  • 第三方库--Masonry的基本使用

    Masonry是目前最流行的AutoLayout框架. 使用: 将Masonry文件包拖入项目 使用Masonry...

  • 新手如何使用Masonry 布局

    Masonry的使用 (一)Masonry介绍 Masonry是一个轻量级的布局框架 拥有自己的描述语法 采用更优...

  • Masonry使用总结

    Masonry使用总结 一、Masonry简介 Masonry是一个轻量级的布局框架,适用于iOS以及OS X。它...

网友评论

      本文标题:使用masonry的一个坑

      本文链接:https://www.haomeiwen.com/subject/gahghqtx.html