检查是否满足约束

时间:2017-10-30 17:23:43

标签: swift autolayout constraints

我有一个UIStackView,它包含登录页面的textFields和按钮。当用户拉起键盘时,UIStackView的底部约束跟随键盘框架。

Large

对于一个按钮(“尝试演示”)我希望它是默认高度或隐藏高度,具体取决于键盘压缩UIStackView的程度。因此,我在按钮上放置了以下两个约束,将更高的优先级分配给第二个(默认高度):

Two constraints

因此,当高度降至0约束时,您可以看到按钮不是完全不可见的:

Small

我想使用一个方法来监听约束何时变为零,然后响应它并完全隐藏按钮。我正在将约束连接到viewcontroller:

@IBOutlet weak var defaultHeightConstraint: NSLayoutConstraint! {
    didSet {
        DispatchQueue.main.async {
            self.demoButton.isHidden = !self.defaultHeightConstraint.isActive
        }
    }
}

..但似乎约束是活跃的,即使它被重新划分优先级。是否有任何默认方式来检查约束是否满足?作为self.defaultHeightConstraint.isSatisfied?我该怎么听这个事件?

编辑:实际上没有调用didSet,因为约束不会改变..

1 个答案:

答案 0 :(得分:0)

使用键盘的监听器,当键盘未隐藏时,您可以隐藏按钮并在键盘隐藏时显示按钮。