[英]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.