添加到父视图时向 UITableView 添加 AutoLayout 约束

Posted

技术标签:

【中文标题】添加到父视图时向 UITableView 添加 AutoLayout 约束【英文标题】:Adding AutoLayout Constraints To A UITableView When Adding To Parent View 【发布时间】:2017-10-31 15:45:28 【问题描述】:

我正在尝试使用 Autolayout 在我的 UITableView 中创建以下设置,然后将其添加为其包装 UIView 的子视图。

到目前为止,我正在使用以下内容,但一点运气都没有。这是据我所知,它正在引发错误。

//Trailing
    NSLayoutConstraint *trailing =[NSLayoutConstraint
                                   constraintWithItem:self.tableViewVideoList
                                   attribute:NSLayoutAttributeTrailing
                                   relatedBy:NSLayoutRelationEqual
                                   toItem:self.viewContentWrapper
                                   attribute:NSLayoutAttributeTrailing
                                   multiplier:1.0f
                                   constant:0.f];

    //Leading

    NSLayoutConstraint *leading = [NSLayoutConstraint
                                   constraintWithItem:self.tableViewVideoList
                                   attribute:NSLayoutAttributeLeading
                                   relatedBy:NSLayoutRelationEqual
                                   toItem:self.viewContentWrapper
                                   attribute:NSLayoutAttributeLeading
                                   multiplier:1.0f
                                   constant:0.f];

    //Bottom
    NSLayoutConstraint *bottom =[NSLayoutConstraint
                                 constraintWithItem:self.tableViewVideoList
                                 attribute:NSLayoutAttributeBottom
                                 relatedBy:NSLayoutRelationEqual
                                 toItem:self.viewContentWrapper
                                 attribute:NSLayoutAttributeBottom
                                 multiplier:1.0f
                                 constant:0.f];

    [self.viewContentWrapper addConstraint:trailing];
    [self.viewContentWrapper addConstraint:bottom];
    [self.viewContentWrapper addConstraint:leading];


    [self.viewContentWrapper addSubview:self.tableViewVideoList];

任何帮助都会非常感谢,我通常会在 Storybaord 中完成所有自动布局工作。

【问题讨论】:

您面临哪些错误? 在添加固定约束之前需要将表视图添加为子视图 我认为您还需要通过添加顶部约束或显式设置高度来设置 tableview 的高度 【参考方案1】:

你可能忘了这样做:

self.tableViewVideoList.translatesAutoresizingMaskIntoConstraints = NO;

并且你应该在设置约束之前将 `tableViewVideoList' 添加到它的超级视图中。

而且您缺少顶部布局约束或高度约束(正如 3stud1ant3 指出的那样)

【讨论】:

以上是关于添加到父视图时向 UITableView 添加 AutoLayout 约束的主要内容,如果未能解决你的问题,请参考以下文章

仅在可见时向 UIScrollView 添加视图

如何将 SwiftUI 视图动态添加到父视图?

如何将 nib 文件中的 UITableView 加载到父视图控制器中的容器视图中?

如何通过仅膨胀一次将相同的视图多次添加到父级

如何将子 ViewController 的视图添加到父 View 控制器的子视图中?

旋转设备时以编程方式将视图添加到父 LinearLayout 会重复最后一个条目