[self.line mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(_line.superview).multipliedBy(0.5);
}];
[self.line mas_updateConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(_line.superview).multipliedBy(1.66666);
}];
"<MASLayoutConstraint:0x14efa7170 UIView:0x14ef3f5a0.centerY == UIView:0x14ef3ec00.centerY * 0.5>",
"<MASLayoutConstraint:0x15026dcb0 UIView:0x14ef3f5a0.centerY == UIView:0x14ef3ec00.centerY * 1.66666>"当我尝试更新约束时,会有冲突,如何正确使用?
看起来更新操作创建了一个新的约束,而不是更改它的值。
它不能在mas_updateConstraints中应用吗?
我必须使用mas_remakeConstraints吗?
发布于 2018-12-26 17:42:10
苹果公司的医生说:
与其他属性不同,常量可以在创建约束后进行修改。在现有约束上设置常量比删除约束并添加一个新的约束要好得多,新的约束就像旧的约束一样,但具有新的常量。
让我们在下面粘贴一些普通约束:
[NSLayoutConstraint constraintWithItem:view1
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:superview
attribute:NSLayoutAttributeTop
multiplier:1.0
constant:padding.top]根据doc,mas_updateConstraints应该改变现有约束的常量值,然而,multiplier is 常量部分。
根据doc的说法,请使用mas_remakeConstraints,它会在安装新文件之前删除所有现有文件。
https://stackoverflow.com/questions/38179894
复制相似问题