我有一个包含许多标签和文本字段的表单,我想仅在选择了选择器视图时显示一些文本字段,所以我使用hidden = true
隐藏我的项目,但两个文本字段之间存在差距因为文本字段的中间是隐藏的。我该怎么办,所以我没有空格?
屏幕:
答案 0 :(得分:0)
您可以使用具有不同优先级的自动布局约束来完成您想要的任务。
8
的常量和998
的优先级。8
,优先级为997
。@IBOutlet
添加到您的代码中。您可以通过在文档大纲和控件中查找约束来执行此操作 - 拖延到您的代码中。称之为field3Top
。当需要隐藏字段2时,请为文本字段2设置hidden
属性,将标记2设置为true
,并将fieldTop.priority
的优先级更改为{{ 1}}。这将导致此约束优先于另一个约束,并且将关闭间隙。
999
当需要再次显示字段2时,请设置@IBOutlet weak var field3Top: NSLayoutConstraint!
@IBOutlet weak var field2Label: UILabel!
@IBOutlet weak var field2TextField: UITextField!
field3Top.priority = 999
field2Label.hidden = true
field2TextField.hidden = true
// for fun, you can animate the change with this code
UIView.animateWithDuration(1.0) {
self.view.layoutIfNeeded()
}
并将field3Top.priority = 997
属性设置回hidden
。
这是隐藏行动的演示: