为什么如果我有一个带有按钮的简单viewcontroller,一个“控件视图”和一个位于其下方的表格视图,那么我无法获得将表格视图扩展为涵盖“视图”的逻辑按下按钮,然后再按一次恢复。该表将覆盖“控件视图”,但是再次按下时,不会“还原”该表到“控件视图”下方
@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
}
}
答案 0 :(得分:1)
您应该设置tableview的高度,并且tableview应该限制在顶部和底部垂直间距(如果要支持其他设备)。
初始设置为:
点击按钮时,只需更改优先级:
答案 1 :(得分:1)
如果您的controlView
的高度固定,
1)为故事板到controlView
的{{1}}高度设置一个插座,并在需要隐藏它时将其设置为0。取消隐藏时设置另一个值。
不要忘记将 0 ViewController
的底部空间设置为controlView
,否则tableView
不会覆盖您的tableView
。
答案 2 :(得分:1)
请注意以下代码:
myTableView.topAnchor.constraint(equalTo:myControlView.topAnchor).isActive = true
myTableView.topAnchor.constraint(equalTo: myControlView.bottomAnchor).isActive = true
每次调用myTableView.topAnchor.constraint都会添加一个新约束,这不是您想要的。
因此,请创建两个约束并将其保存到成员变量,然后根据需要激活或停用它。
顺便说一句,您不必每次单击按钮时都设置translatesAutoresizingMaskIntoConstraints,只需在xib或viewDidLoad中将其设置一次即可。