Masonry 中 mas_updateConstraints 与 mas_remakeConstraints 的使用

1,492 阅读1分钟

官方文档介绍

  • mas_updateConstraints:在 block 中创建的约束,会在 block 结束的时候添加到目标视图上。如果添加的约束已存在,则会将已存在的约束更新为最新添加的。
  • mas_remakeConstraints:在 block 中创建的约束,会在 block 结束的时候添加到目标视图上。之前添加的所有约束都会被移除。

示例:

已添加约束的视图:

[self.lineView mas_makeConstraints:^(MASConstraintMaker *make) {
    make.left.equalTo(self.contentView).offset(66);
    make.right.equalTo(self.contentView).offset(-22);
    make.bottom.equalTo(self.contentView).offset(-10);
    make.height.equalTo(@0.5);
}];

调用 mas_updateConstraints:

[self.lineView mas_updateConstraints:^(MASConstraintMaker *make) {
    make.bottom.equalTo(self.contentView).offset(0);
}];

上述代码的执行结果:

  • left、right、height 约束不变。
  • 将 bottom 更新为 0。

调用 mas_remakeConstraints:

[self.lineView mas_remakeConstraints:^(MASConstraintMaker *make) {
    make.bottom.equalTo(self.contentView).offset(0);
}];

上述代码的执行结果:

  • 移除所有约束:left、right、height、bottom。
  • 添加新的约束:bottom。

应用场景

  • mas_updateConstraints:用于更新某一条约束。
  • mas_remakeConstraints:用于重新构建视图的约束。

删除某一约束

// 1.声明约束属性
@property (nonatomic, strong) MASConstraint *constraint;
[self.lineView mas_remakeConstraints:^(MASConstraintMaker *make) {
// 2.持有约束
    self.constraint = make.bottom.equalTo(self.contentView).offset(0);
}];
//3.删除约束
[self.constraint uninstall];