ios使用约束隐藏视图
Posted
技术标签:
【中文标题】ios使用约束隐藏视图【英文标题】:ios using constraints to hide a view 【发布时间】:2018-09-16 18:36:44 【问题描述】:为什么如果我有一个带有按钮、“控制视图”和下面的表格视图的简单视图控制器,当按钮被按下,如果再次按下则恢复。该表格将覆盖“控制视图”,但当第二次按下时,不会“恢复”“控制视图”下方的表格
@IBAction func buttonPressed(_ sender: Any)
if bControlHide == false
myTableView.translatesAutoresizingMaskIntoConstraints = false
myControlView.translatesAutoresizingMaskIntoConstraints = false
myTableView.topAnchor.constraint(
equalTo: myControlView.topAnchor).isActive = true
bControlHide = true
else
bControlHide = false
myTableView.translatesAutoresizingMaskIntoConstraints = false
myControlView.translatesAutoresizingMaskIntoConstraints = false
myTableView.topAnchor.constraint(
equalTo: myControlView.bottomAnchor).isActive = true
【问题讨论】:
你在控制台中得到了什么吗?您是否在 View Debugger 中看到任何感叹号? 不,没有警告...看看目前剩下的 3 cmets... 【参考方案1】:如果您的controlView
具有固定高度,
1) 为故事板到ViewController
的controlView
高度创建一个出口,并在需要隐藏它时将其设置为0。取消隐藏时设置另一个值。
不要忘记将0controlView
底部空间设置为tableView
,否则tableView
不会覆盖你的controlView
。
【讨论】:
【参考方案2】:您应该设置 tableview 的高度,并且 tableview 应该限制为顶部和底部的垂直间距(如果您想支持不同的设备)。
初始设置为:
高度常数大于0 高度优先级为 1000 底部约束为 0 最低优先级为 750当您点击按钮时,您只需要更改优先级:
身高优先级为750 最低优先级为 1000【讨论】:
不确定您指的是什么约束。如果我创建按钮、控件视图和表格并定位它们,然后添加缺少的约束,您指的是高度和底部的哪些约束?【参考方案3】:请注意以下代码:
myTableView.topAnchor.constraint(equalTo:myControlView.topAnchor).isActive = true
myTableView.topAnchor.constraint(equalTo: myControlView.bottomAnchor).isActive = true
每次调用 myTableView.topAnchor.constraint 都会添加一个新的约束,这不是你想要的。
所以请创建并保存这两个约束到成员变量中,然后根据需要激活或停用。
顺便说一句,您不必每次单击按钮时都设置 translatesAutoresizingMaskIntoConstraints,在 xib 或 viewDidLoad 中设置一次
【讨论】:
以上是关于ios使用约束隐藏视图的主要内容,如果未能解决你的问题,请参考以下文章
iOS 以编程方式生成的视图具有隐藏的约束,导致与自动布局发生冲突