【发布时间】: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