UIStackView - 使用动画隐藏和折叠子视图

And*_*eev 5 ios swift uistackview

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

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

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

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

Wez*_*Wez 11

根据Apple的文档:

您可以对已排列的子视图的isHidden属性进行两个更改的动画处理,并通过将这些更改放在动画块中来更改堆栈视图的属性.

我已经使用iOS 12.1模拟器测试了以下代码,它按预期工作.

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

安排的子视图动画Gif


似乎使用动画限制的经典方式__CODE__不适用于已知的已安排的子视图.