首页 > 解决方案 > UIStackView - 用动画隐藏和折叠子视图

问题描述

我正在尝试像这样隐藏 UIStackView 的子视图:

UIViewPropertyAnimator.runningPropertyAnimator(withDuration: 2.0, 
      delay: 0, options: [.curveEaseOut], animations: {
    self.label.isHidden = true
    self.label.alpha = 0.0
    self.stackView.layoutIfNeeded()
})

但是,使用此代码后,标签会立即消失。我怀疑这是因为设置isHidden为 true,这是折叠所必需的。

有没有办法用动画隐藏和折叠 UIStackView 的 subvew?或者根本不使用 UIStackView 可能会更好?

标签: iosswiftuistackview

解决方案


根据苹果的文档

通过将这些更改放置在动画块中,您可以对排列的子视图的 isHidden 属性和对堆栈视图的属性的更改进行动画处理。

我已经使用 iOS 12.1 Simulator 测试了以下代码,它按预期工作。

UIView.animate(
    withDuration: 2.0,
    delay: 0.0,
    options: [.curveEaseOut],
    animations: {
        self.label.isHidden = true
        self.label.alpha = 0.0
})

排列的子视图动画 Gif


推荐阅读