ios - 如何使用自动布局的 Masonry DSL 定义 View 之间的垂直和水平关系?

标签 ios autolayout ios-autolayout

使用 Apple 的视觉格式语言,使用间隔符设置 View 及其父 View 之间的水平和垂直关系非常简单。

如果我希望下面的可视化示例中的 view2 具有固定宽度,而 view1 将填充剩余空间。对于 VFL,我将按如下方式指定此行为:

|-[view1]-[view2(==100)-|

visual example of layout I want to achieve with Masonry

对于 Masonry,如何在 View 之间建立这些关系并不明确; view1 不“了解”view2,并且会低于或重叠它。我错过了什么?

最佳答案

View 仍然相互“感知”。关键是将view2的左边缘固定到view1的右边缘:

[view1 mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.bottom.left.equalTo(containerView);
        }];

[view2 mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.bottom.equalTo(containerView);
            make.left.equalTo(view1.mas_right);
            make.right.equalTo(containerView);
            make.width.equalTo(@100);
        }];

关于ios - 如何使用自动布局的 Masonry DSL 定义 View 之间的垂直和水平关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28078460/

相关文章:

ios - 使用 quartz2d 进行图像处理

ios - 在不同 View Controller 中使用时返回 nil 值的全局变量

cocoa - 如何在 NSSplitView 的 subview 中使用自动布局?

ios - UIPageViewController - View 最初不在正确的位置

ios - 为什么在模拟器中的 UI 布局正常的情况下调试 View 层次结构时会出现这些布局问题

ios - 当 View 加载到一个 xib 文件中时选择特定的 UIView

ios - 二元运算符 '==' 不能应用于两个 `CGAffineTransform` 操作数

cocoa - 使用 autoLayout 的 NSScrollView 上方的按钮

swift - UIImageView 在 StackView 和 TableViewCell 中不是自动高度