【问题标题】:Container view size not changing when the embedded controller's view height constraint changes当嵌入式控制器的视图高度约束发生变化时,容器视图大小不会改变
【发布时间】:2018-05-02 09:12:26
【问题描述】:

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

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

编辑:

我意识到我的问题具有误导性。我将嵌入式控制器视图的高度约束设置为 0,并且我希望它的容器高度降低到 0。这是一个错误的假设吗?

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

嵌入式控制器的视图层次结构

这是带有容器视图的视图控制器的外观 -

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

这是我在将高度约束设置为 0 时想要看到的 -

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

【问题讨论】:

  • 其实superview(container, parent)的某些subview(embedded, child)被设置为隐藏时不隐藏是正常的。
  • 如果你想隐藏父母你可以调用 self.superview.hidden = YES;
  • @nambatee 你想达到什么目的?
  • @Vyacheslav 编辑了原始问题

标签: ios swift uistoryboard uicontainerview


【解决方案1】:

您没有显示您的代码,因此很难看出哪里出了问题。一般来说,有几种方法可以隐藏您的容器视图:

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

3 号是最简单的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    相关资源
    最近更新 更多