我的行为很奇怪。我的整个视图控制器看起来像这样(垂直顺序):
我在UIView和底部布局指南之间添加了约束,我用这种方法制作动画:
func toggleContinueButton(_ toggleOn: Bool) {
if toggleOn {
self.buttonViewConstraint.constant = 0
} else {
self.buttonViewConstraint.constant = -80
}
UIView.animate(withDuration: 0.5) {
self.view.layoutIfNeeded()
}
}
由于一些奇怪的原因,这个螺丝勾选标记,现在从屏幕左边缘的外部“飞行”,并且右边进入所选单元格右侧的正确和预期位置。下面我有简单的选择/取消选择代码:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.cellForRow(at: indexPath)!.accessoryType = .checkmark
self.updateContinueButtonState()
}
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
tableView.cellForRow(at: indexPath)!.accessoryType = .none
self.updateContinueButtonState()
}
有没有人见过这样的怪异?
P.S。尝试了两个版本:第一,滑动UIView在tableView上面悬停在& out中,第二个是在UIView中滑动缩小tableView的高度。没有工作。
答案 0 :(得分:0)
很难说,但您可以先尝试调用layoutIfNeeded
,然后更改约束,然后再在动画块内调用它。这使得其他布局更改时间首先更新。