带有砌体的iOS AutoLayout,未能将子底部设置为父底部

Posted

技术标签:

【中文标题】带有砌体的iOS AutoLayout,未能将子底部设置为父底部【英文标题】:iOS AutoLayout with masonry, failed to set child's bottom equal to parent bottom 【发布时间】:2016-09-02 12:13:44 【问题描述】:

我有一个在屏幕上显示为红色的父视图,在其中有一个为绿色的子视图。尝试将孩子定位到左下角时,以下代码失败。

    [superView addSubview:self];
    self.backgroundColor = [UIColor redColor];
    [self makeConstraints:^(MASConstraintMaker *make) 
        make.width.left.top.equalTo(superView);
        make.height.mas_equalTo(50);
    ];

    UIView *header = [[UIView alloc] init];
    [self addSubview:header];
    header.backgroundColor = [UIColor greenColor];
    [header makeConstraints:^(MASConstraintMaker *make) 
        make.height.mas_equalTo(30);
        make.width.mas_equalTo(30);
        make.bottom.equalTo(self);
    ];

如何解决这个问题?

【问题讨论】:

【参考方案1】:

如果您尝试为标题视图设置前导约束,例如

mas.leading.equalTo(@0);

【讨论】:

以上是关于带有砌体的iOS AutoLayout,未能将子底部设置为父底部的主要内容,如果未能解决你的问题,请参考以下文章

iOS 8 AutoLayout 改变视图的位置

iOS 8 xib + AutoLayout 无法为 tableViewHeaderView 正常工作

有哪些选项可以使用带有可调整大小和可排序元素的 flexbox 进行类似砌体的布局

表视图单元格上的 iOS 砌体

iOS UITableViewCell 中的砌体非常慢

Xcode 10.1 在尝试将应用程序侧加载到带有 iOS 12.1 的设备后未能创建配置文件