Мор*_*орт 5 ios swift uistackview
如果我尝试动画隐藏stackview的所有子视图,我可以看到它们向左上角移动.在展示时,它们的动画从左上角到适当的空间.如果我只隐藏已排列视图的子集,则会按预期动画.
我目前的解决方法是在堆栈中保留一个不可见的子视图,但这是非常不可思议的.
我在躲藏
UIView.animate(withDuration: 0.5) {
self.someStack.arrangedSubviews.forEach { $0.isHidden = !$0.isHidden
}
Run Code Online (Sandbox Code Playgroud)
我遇到了一个非常相似的问题,经过几个小时的来回,我发现调用self.view.layoutIfNeeded()
解决了这个问题。
我的层次结构:
- UIView
- UIStackView
- UIStackView(1)
- UIButton
- UIButton
- UIStackView(2)
- UITextField
- UIButton
- UIActivityIndicatorView
当键盘根据 . 中的调用出现时,根UIView
动画UITextField.becomeFirstResponder()
从底部开始(2)UIStackView
。默认情况下,每个子视图(2)UIStackView
都是隐藏的。根据UISegmentedControl
更改,应用程序调用UITextField.becomeFirstResponder()
并隐藏(1)UIStackView
和显示(2)UIStackView
. 如果我不调用self.view.layoutIfNeeded()
后stackView.subviews.forEach { $0.isHidden = false }
显示子视图,(2)UIStackView
我会看到它们从左上角开始动画设备的
我不知道这是否对您有帮助,但这可能是调查的起点。