【问题标题】:hide/ show controls in View controllers在视图控制器中隐藏/显示控件
【发布时间】:2015-11-13 09:26:51
【问题描述】:

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

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

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

像这样编程,如果布局有任何变化对我来说是非常困难的。 (即,如果用户请求从视图控制器中添加/删除任何特定控件)。

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

我正在使用 IOS9 和 Swift。

非常感谢。

【问题讨论】:

    标签: ios swift autolayout constraints


    【解决方案1】:

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

    对于隐藏/显示行或部分,您可以在tableView:heightForRowAtIndexPath 方法中更改大小。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        您可以使用 UIViews 的 hidden 属性来隐藏/显示视图,而不是使 IBOutlets 限制您可能需要隐藏的所有视图的高度。

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

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

        【讨论】:

        • 嗨,我可以使用 UIViews 的隐藏属性。但是当它们被隐藏时,视图占用的空间应该由以下视图填充。如果我使用隐藏它不会自动对齐,我们可以看到正确的空间
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多