UIStackView隐藏查看animation

在iOS 11中,隐藏animation在UIStackView的行为已经改变,但是我一直无法在任何地方find这个logging。

iOS 10

iOS 10动画

iOS 11

iOS 11动画

这两个代码是这样的:

 UIView.animate(withDuration: DiscoverHeaderView.animationDuration, delay: 0.0, usingSpringWithDamping: 0.9, initialSpringVelocity: 1, options: [], animations: { clear.isHidden = hideClear useMyLocation.isHidden = hideLocation }, completion: nil) 

如何在iOS 11上恢复以前的行为?

刚刚有同样的问题。 解决方法是在animation块内添加“stackView.layoutIfNeeded()”。 其中stackView是您希望隐藏的项目的容器。

 UIView.animate(withDuration: DiscoverHeaderView.animationDuration, delay: 0.0, usingSpringWithDamping: 0.9, initialSpringVelocity: 1, options: [], animations: { clear.isHidden = hideClear useMyLocation.isHidden = hideLocation stackView.layoutIfNeeded() }, completion: nil) 

不知道为什么这是突然在iOS 11中的问题,但公平的,它一直是推荐的方法。