一尘不染

UIStackView隐藏视图动画

swift

在iOS 11中,a中的隐藏动画的行为UIStackView已更改,但是我无法在任何地方找到该文档。

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上还原以前的行为?


阅读 549

收藏
2020-07-07

共1个答案

一尘不染

只是有同样的问题。该修复程序将添加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中突然成为一个问题,但公平地说,这一直是推荐的方法。

2020-07-07