UIStackView,隐藏子视图,调整动画大小

时间:2018-06-14 12:34:46

标签: ios swift uistackview

我在UIStackView中看到了here非常流畅的隐藏/显示子视图的动画。

我尝试在自己的应用程序中重现它,但我遇到了问题。

在动画处理过程中隐藏的视图不会调整大小。它只等到动画结束然后消失。与上面链接的示例中的clear button相反。

我的代码:

UIView.animate(withDuration: 0.5,
               delay: 0.0,
               usingSpringWithDamping: 0.9,
               initialSpringVelocity: 1,
               options: [],
               animations: {
                    self.acceptDeclineBar.isHidden = !newState
                    self.view.layoutIfNeeded()
                },
               completion: nil)

问题

UIStackView是否可以免费为hide / show调整动画大小,或者我是否需要使用高度约束为自己实现?

1 个答案:

答案 0 :(得分:0)

您的视图(self.acceptDeclineBar)将在动画完成时隐藏。尝试在动画前隐藏。

self.acceptDeclineBar.isHidden = !newState

 UIView.animate(withDuration: 0.3){ [weak self]
                    self?.view.layoutIfNeeded()
}

或者不是隐藏你可以使用高度约束

acceptDeclineBarHeightConstraint.constant = newState ? 60 (whatever Visbale size) : 0 (Hide)
 UIView.animate(withDuration: 0.3){ [weak self]
                    self?.view.layoutIfNeeded()
}