【问题标题】:ios using constraints to hide a viewios使用约束隐藏视图
【发布时间】: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...

标签: ios xcode nslayoutconstraint nslayoutanchor


【解决方案1】:

如果您的controlView 具有固定高度,

1) 为故事板到ViewControllercontrolView 高度创建一个出口,并在需要隐藏它时将其设置为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 中设置一次

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-23
      • 2015-04-02
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多