嵌入式控制器的视图高度约束更改时,容器视图大小不会更改

时间:2017-11-18 19:32:47

标签: ios swift uistoryboard uicontainerview

我有一个容器视图,它在viewDidLoad中嵌入了另一个视图控制器。当我隐藏嵌入式视图控制器的视图时,容器视图将保留在屏幕上。嵌入式控制器的视图有Greater or Equal高度约束,当我隐藏视图时,我将其设置为0。

当我隐藏嵌入式控制器的视图时,如何隐藏容器视图?

编辑:

我意识到我的问题是误导性的..我将嵌入式控制器视图的高度限制设置为0,我期望它的容器高度减少到0.这是一个错误的假设吗?

如果我设置高度约束与Equal的关系,它会起作用,如果我将关系更改为Greater Than or Equal,它将停止工作。

嵌入式控制器的视图层次结构 Embedded controller's view hierarchy

这是容器视图的视图控制器的样子 -

View controller with the container view

我希望能够更改容器视图中嵌入的视图的高度约束,并使容器视图与新高度匹配(0或44,具体取决于我是否要向用户显示视图。我制作在嵌入式控制器viewWillAppear文件中.swift内的决定。

当我将高度约束设置为0 -

时,我想看到这一点

Goal

我想将Greater Than or Equal关系用于高度约束的原因是可访问性。我希望当用户增加字体大小时,嵌入式视图的大小会增加。

1 个答案:

答案 0 :(得分:0)

您没有显示您的代码,因此很难看出哪些内容出错了。通常,有几种方法可以隐藏容器视图:

  1. 给它一个退化的高度约束。看起来你正在这样做。您是否正在调用 layoutIfNeeded 来强制重新计算框架?
  2. 将容器的 isHidden 属性设置为true
  3. 将容器的 backgroundColor 设置为.clear
  4. 3号是最简单的。