【问题标题】:UIStackView different show hide animation between ios versionsios版本之间的UIStackView不同的显示隐藏动画
【发布时间】:2019-11-08 08:46:43
【问题描述】:

UIStackViewhide 显示动画在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 13 中动画不正确。

那么有没有办法让这个动画就像在 ios10 上一样?还是应该使用UITableView 而不是UIStackView

【问题讨论】:

    标签: ios swift uistackview


    【解决方案1】:

    您好像忘记降低 view3 高度约束的优先级了。

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

    【讨论】:

    • 确实是这样。默认情况下,每个 nslayoutconstraint 在创建时都需要优先级。这对于 ios 10 和 13 都是相同的。但 UIStackView 处理约束优先级的方式似乎在 ios 12 中发生了变化。将优先级设置为 defaultLow 以解决高度约束问题。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多