首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Masonry mas_makeConstraints来避免冲突?

如何使用Masonry mas_makeConstraints来避免冲突?
EN

Stack Overflow用户
提问于 2016-07-04 16:19:52
回答 1查看 587关注 0票数 1
代码语言:javascript
复制
[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吗?

EN

回答 1

Stack Overflow用户

发布于 2018-12-26 17:42:10

苹果公司的医生说:

与其他属性不同,常量可以在创建约束后进行修改。在现有约束上设置常量比删除约束并添加一个新的约束要好得多,新的约束就像旧的约束一样,但具有新的常量。

让我们在下面粘贴一些普通约束:

代码语言:javascript
复制
[NSLayoutConstraint constraintWithItem:view1
                                 attribute:NSLayoutAttributeTop
                                 relatedBy:NSLayoutRelationEqual
                                    toItem:superview
                                 attribute:NSLayoutAttributeTop
                                multiplier:1.0
                                  constant:padding.top]

根据docmas_updateConstraints应该改变现有约束的常量值,然而,multiplier is 常量部分。

根据doc的说法,请使用mas_remakeConstraints,它会在安装新文件之前删除所有现有文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38179894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档