In iOS 11 the behaviour of the hide animation within a UIStackView
has changed, but I have been unable to find this documented anywhere.
iOS 10
iOS 11
The code in both is this:
UIView.animate(withDuration: DiscoverHeaderView.animationDuration,
delay: 0.0,
usingSpringWithDamping: 0.9,
initialSpringVelocity: 1,
options: [],
animations: {
clear.isHidden = hideClear
useMyLocation.isHidden = hideLocation
},
completion: nil)
How do I restore the previous behaviour on iOS 11?
Swift 4 Extension:
Just had the same issue. The fix is adding
stackView.layoutIfNeeded()
inside the animation block. WherestackView
is the container of the items you're wishing to hide.Not sure why this is suddenly an issue in iOS 11 but to be fair it has always been the recommended approach.