繁体   English   中英

当所有子视图隐藏在动画块中时,UIStackView将其排列的子视图移动到左上角

[英]UIStackView moves it's arranged subviews to top left when all subviews are hidden within an animation block

如果我尝试动画隐藏stackview的所有子视图,我可以看到它们向左上角移动。 在展示时,它们的动画从左上角到适当的空间。 如果我只隐藏已排列视图的子集,则会按预期动画。

我目前的解决方法是在堆栈中保留一个不可见的子视图,但这是非常不可思议的。

我在躲藏

UIView.animate(withDuration: 0.5) {                
    self.someStack.arrangedSubviews.forEach { $0.isHidden = !$0.isHidden 
}

我遇到了一个非常类似的问题,经过几个小时的来回,我发现调用self.view.layoutIfNeeded()修复了这个问题。

我的等级:

- UIView - UIStackView - UIStackView(1) - UIButton - UIButton - UIStackView(2) - UITextField - UIButton - UIActivityIndicatorView

根据对(2)UIStackView中的UITextField.becomeFirstResponder()的调用,当键盘出现时,根UIView从底部动画 默认情况下,隐藏(2)UIStackView每个子视图。 基于UISegmentedControl更改,应用程序调用UITextField.becomeFirstResponder()并隐藏(1)UIStackView并显示(2)UIStackView 如果我在stackView.subviews.forEach { $0.isHidden = false }之后没有调用stackView.subviews.forEach { $0.isHidden = false } self.view.layoutIfNeeded()来显示(2)UIStackView的子视图,我会从设备的左上角看到它们的动画效果。

我不知道这是否对你有帮助,但它可能是一个调查的起点。

尝试在堆栈视图中添加一个额外的空视图(宽度/高度0)。 这为我解决了这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM