Swift Xcode-首次查看容器视图时初始约束会更改

Swift Xcode-首次查看容器视图时初始约束会更改,swift,xcode,constraints,Swift,Xcode,Constraints,我有一个主视图控制器和一个包含表视图控制器的容器。在主视图控制器中,容器是使用每个方向上的约束放置的,但当主视图控制器第一次出现时,它不会遵循约束 但是,当我切换到另一个视图(“uppladning”)然后返回到主视图时,容器显示正确 好吧,我找到了解决问题的临时方法 override func viewDidLayoutSubviews() { if (firstTimeDisplay)! { self.certificateListViewContainer.fra

我有一个主视图控制器和一个包含表视图控制器的容器。在主视图控制器中,容器是使用每个方向上的约束放置的,但当主视图控制器第一次出现时,它不会遵循约束

但是,当我切换到另一个视图(“uppladning”)然后返回到主视图时,容器显示正确


好吧,我找到了解决问题的临时方法

override func viewDidLayoutSubviews() {
    if (firstTimeDisplay)! {
        self.certificateListViewContainer.frame = CGRect(x: 9, y: 9, width: self.view.bounds.width - 18, height: self.view.bounds.height - 52)
    }
}

也就是说,第一次显示容器时,我使用布尔值var firstTimeDisplay手动更改容器的帧大小。这不是一个优雅的解决方案,但现在就可以了。

为容器视图设置背景色,然后重试。这将帮助您确定容器视图或表视图上的约束是否不起作用


理想情况下,如果只是从选项卡栏控制器中的另一个选项卡或序列切换回视图控制器,则不应触发任何操作。因此,在方法上设置一个断点,比如unwind方法,
prepareForSegue
,然后看看当您切换回时会发生什么变化。然后,您将了解第二次开始使用约束的原因。

您确定容器视图没有遵循约束吗?它可能是表视图吗?我也这么想,但因为当我返回到视图时它显示正确,即使容器内容相同,我觉得它与表视图没有任何关系。