在View控制器中隐藏/显示控件

时间:2015-11-13 09:26:52

标签: ios swift autolayout constraints

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

为了实现这一目标,我做了以下几点。

  1. 为所有控件设置固定高度(例如30)
  2. 在每个控件上设置高度约束,并在ViewController
  3. 中创建高度约束的出口
  4. 根据场景以编程方式更改heightConstraint.constant值(介于0.0和30.0之间)。
  5. 这样编程后,如果布局有任何变化,对我来说很难。 (即,如果用户请求从视图控制器添加/删除任何特定控件)。

    我正在使用自动布局限制。任何人都可以建议是否有更好的方法来实现我的目标。

    我正在使用IOS9和Swift。

    非常感谢提前。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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

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

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