ios - masonry 自动布局不起作用

标签 ios autolayout masonry

布局代码:

[leftLabel mas_makeConstraints:^(MASConstraintMaker *make) {
    make.edges.equalTo(self.view).with.insets(UIEdgeInsetsMake(10, 10, 0, 0));
}];

[leftLabel mas_updateConstraints:^(MASConstraintMaker *make) {
    make.edges.equalTo(self.view).with.insets(UIEdgeInsetsMake(10, 20, 100, 20));
    make.width.equalTo(@(200)); 
}];

我想把leftLabel的宽度设置为200,但是结果不对,能告诉我原因吗,非常感谢,

我还有一个问题,我可以随时使用 mas_updateConstraints 代替 mas_makeConstraints 吗?

最佳答案

当您设置标签的边缘时,您间接定义了它的宽度。所以你应该设置边缘或宽度。不是都。在您的情况下,如果您想将标签的宽度设置为 200 并保留边缘插入中的其余三个常量,您应该这样做:

[leftLabel mas_makeConstraints:^(MASConstraintMaker *make) {
    make.top.equalTo(@10);
    make.left.and.bottom.equalTo(@0);
    make.width.equalTo(@200);
}];

根据 Masonry 的文档,您应该使用 mas_updateConstraints 来更新现有约束的常量。因此,只有当您想更改之前使用 mas_makeConstraints 定义的约束的某些值时,您才应该使用它。

关于ios - masonry 自动布局不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33462026/

相关文章:

ios - 具有可变 contentSize 的 UIScrollView

ios - 指示无效的 NSUserActivity

ios - 如何在 Swift 3 中强制打开后置摄像头闪光灯?

ios - 自动布局约束 - 具有可变高度的项目的垂直间距

ios - 您好,我正在使用 Collection View 单元格,我想记录其中有多少被点击 "made true"并返回下一个 View Controller

ios - 使用 Aspect Fill 图像模式的奇怪的 UIPageViewController 滑动行为

r - 是否可以在砖石网格中排列 Shiny 的应用程序卡?

javascript - Masonry.js(用于 html 网格)。如何通过按按钮自定义 #container resize 上的 regrid div

javascript - Angular masonry指令隐藏内部元素,错误: ReferenceError: Masonry is not defined

ios - 当出现调用或热点状态栏时,我的应用程序布局被破坏