ios 版本之间的 UIStackView 不同显示隐藏动画

UIStackView different show hide animation between ios versions

UIStackView 隐藏显示动画在 ios 版本之间有很大不同。这是一个基本设置。我有一个 UIStackView 里面有三个排列好的子视图。 UIScrollView 包含 UIStcakView。我使用自动布局。堆栈视图代码是这样的:

let stack = UIStackView(arrangedSubviews: [view1, view2, view3])
stack.translatesAutoresizingMaskIntoConstraints = false

stack.axis = .vertical
stack.distribution = .fill
stack.alignment = .fill

制作动画的代码是这样的:

isHidden.toggle()

UIView.animate(withDuration: 2) {
    self.view3.isHidden = self.isHidden
}

当它在 ios 10 模拟器上运行时动画是正确的。

但是在ios13中动画不正确。

那么有没有办法让这个动画和 ios10 上的一样呢?或者我应该使用 UITableView 而不是 UIStackView

您似乎忘记降低 view3 高度限制的优先级。

UIStackView 通过将高度限制为 0 来隐藏它的子视图,因此如果您对视图高度有其他限制,它们将与堆栈视图冲突。