在视图控制器中隐藏/显示控件

hide/ show controls in View controllers

我的应用程序收集用户的输入,因此充满了标签、文本框和按钮,我必须根据特定条件显示或隐藏一组标签和文本框。

为了完成它,我做了以下事情。

  1. 为所有控件设置固定高度(比如 30)
  2. 在每个控件上设置高度限制并在 ViewController
  3. 中创建高度限制的出口
  4. 根据场景以编程方式更改 heightConstraint.constant 值(介于 0.0 和 30.0 之间)。

这样编程,如果布局有任何变化,对我来说很难。 (即,如果用户请求 add/remove 来自视图控制器的任何特定控件)。

我正在使用自动布局约束。谁能建议是否有更好的方法来实现我的目标。

我正在使用 IOS9 和 Swift。

非常感谢。

无需将 IBOutlets 设置为您可能需要隐藏的所有视图的高度限制,您只需使用 UIViews 的 hidden 属性 来 hide/show 视图。

如果您需要视图为其他视图制作 space,您可以设置一个简单的动画并将视图移出屏幕边界。您可能会遇到布局限制问题,但从 UI/UX 的角度来看,这肯定是值得的。

此外,如果您知道不再需要某个视图,您甚至可以从它的父视图中删除该视图。

您是否考虑过为此使用 table?它具有插入和删除行的机制,并会为您管理布局 - 您唯一需要关心的部分是单元格的内容。

对于这种情况,您可以将 UITableViewController 与静态单元格一起使用。

对于 hide/show 行或部分,您可以在 tableView:heightForRowAtIndexPath 方法中更改大小。

UITableViewController 自动管理布局,使用静态单元格,您甚至可以为所有控件创建插座。