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

时间:2019-11-08 08:46:43

标签: ios swift uistackview

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模拟器上运行时,动画是正确的。

ios 10 animation

但是在ios 13中,动画不正确。

ios 13

那么有没有办法像在ios10上那样制作这种动画?还是应该使用UITableView代替UIStackView

1 个答案:

答案 0 :(得分:2)

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

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