Swift:视图未根据编程约束进行调整

Swift: Views not adjusting to programmatic constraints

我有一个隐藏在屏幕底部的视图,并希望它上面的 scrollView 调整并填充空白 space。

屏幕底部的视图是一个GADBannerView,高度固定为50(bannerHeight)。它上方的滚动视图对容器底部有一个约束,该约束等于 50 (scrollConstraint)。见照片。

在 viewDidLoad 中,我将这些约束设置为以下内容:

bannerHeight.constant = 0
scrollConstraint.constant = 0

这导致 bannerView 确实消失了,但滚动视图停留在它的原始位置并且没有填充空白 space。

您可以强制超级视图考虑约束的更改,因为这不会自动发生。在 viewDidLoad() 中将常量设置为 0 后,将您的代码添加到 viewDidLayoutSubviews() 或简单地调用 view.layoutIfNeeded()。

如果这不起作用,您可以尝试以下替代方法:

转到故事板并单击滚动视图的底部约束(为滚动视图提供底部约束 50 的蓝线)。在 Attributes Inspector 中,您应该能够看到有关约束的详细信息,它应该看起来像这样

在要求输入标识符的字段中,为其指定名称 "ScrollViewBottom" 或您喜欢的任何名称。

现在遍历构成滚动视图的所有约束,并使用标识符名称找到正确的名称并将其更改为如下常量

    for constraint in yourScrollView.superview!.constraints {

if constraint.identifier == "ScrollViewBottom" {
    constraint.constant = 0
}
}

最后,通过在

之后直接调用以下命令强制视图考虑此更改
    view.layoutIfNeeded()