我的布局限制正在被覆盖

时间:2017-08-14 16:26:21

标签: ios autolayout

我尝试显示覆盖在另一个视图顶部的表格视图,以显示自动完成选项的列表,但我无法正确调整表格视图的大小。

我在xib文件中定义了一个非常简单的UITableView。我加载它,将其嵌入到现有的屏幕视图中,并在此视图控制器方法中以编程方式为前导,尾随,顶部和高度锚点设置布局约束(代码在C#中):

public void EmbedIn(UIView outerView)
{
    outerView.AddSubview(View);

    var constraints = new[]
    {
        View.LeadingAnchor.ConstraintEqualTo(outerView.LeadingAnchor, 8),
        View.TrailingAnchor.ConstraintEqualTo(outerView.TrailingAnchor, 8),
        View.TopAnchor.ConstraintEqualTo(outerView.TopAnchor, 15),
        View.HeightAnchor.ConstraintEqualTo(outerView.HeightAnchor, 0.4f, 0),
    };

    NSLayoutConstraint.ActivateConstraints(constraints);
}

结果是表格视图太小了 - 它与xib中的尺寸相同(除了奇怪的是,行分隔符继续从底部向下到底部应该的位置)。

当我在Xcode中检查视图层次结构时,表视图的约束如下所示:

Xcode constraints

活跃的四个约束是我没有在运行时或在xib中添加的约束。这些中的宽度和高度与xib中表视图的大小相匹配。我的前导,尾随,顶部和高度约束都在那里,其他禁用约束是另一个与xib尺寸匹配的设置,除了midX和midY而不是minX和minY。

我尝试删除viewDidLoad中的所有表格视图的约束(在添加我自己的约束之前),但是我试图摆脱不存在的约束似乎存在那时候。

那些约束来自何处,以及如何摆脱它们?

1 个答案:

答案 0 :(得分:0)

tableView.translatesAutoresizingMaskIntoConstraints = false