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()
我有一个隐藏在屏幕底部的视图,并希望它上面的 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()