【问题标题】:Checking if a constraint is satisfied检查是否满足约束
【发布时间】:2018-04-11 18:27:33
【问题描述】:

我有一个UIStackView,其中包含用于登录页面的文本字段和按钮。当用户拉起键盘时,UIStackView 的底部约束跟随键盘框架。

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

所以当高度下降到0-约束时,可以看到按钮不是完全不可见的:

我想使用一种方法来监听约束何时变为零,然后对其做出响应并完全隐藏按钮。我将约束连接到视图控制器,如下所示:

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

.. 但似乎约束是活跃的,即使它被取消优先级。是否有任何默认方法来检查约束是否满足?作为self.defaultHeightConstraint.isSatisfied?以及如何监听这个事件?

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

【问题讨论】:

    标签: swift autolayout constraints


    【解决方案1】:

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

    【讨论】:

    • 这是一种方式,但我不想在每个事件中隐藏它。如果屏幕足够大,可以满足defaultHeightConstraint,那么我希望它保持可见。
    猜你喜欢
    • 1970-01-01
    • 2019-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多