我正在根据在 Segment Control 中点击的 Segment 隐藏和取消隐藏 dropDownView(由文本字段和按钮组成的 UIView)。以下是 View 层次结构:-
以下是隐藏/取消隐藏 dropDownView 的代码:-
private func animateView(view: UIStackView, toHidden hidden: Bool) {
UIView.animate(withDuration: 0.25)
{
let firstView = view.arrangedSubviews[0]
firstView.isHidden = hidden
}
}
func segmentValueChanged(_ sender: UISegmentedControl) {
let segmentSelected = segmentControl.selectedSegmentIndex
switch segmentSelected {
case 0:
animateView(view: mainStackView, toHidden: true)
case 1:
animateView(view: mainStackView, toHidden: true)
case 2:
animateView(view: mainStackView, toHidden: true)
case 3:
animateView(view: mainStackView, toHidden: false)
default:
break
}
}
我面临的问题是在更改段超过 10-15 次后,上述代码停止工作并且 DropDown View 与段控制重叠,我不知道为什么。任何有助于理解此问题的帮助表示赞赏。
我也试过了
<强> 1。设置需求布局,
2.设置NeedsDisplay和
3.将dropDownView的高度限制优先级从999降低
1000
Best Answer-推荐答案 strong>
似乎在 completionClosure 中的附加设置 isHidden 修复了该问题(Swift 5 语法):
private func animateView(view: UIStackView, toHidden hidden: Bool) {
let firstView = view.arrangedSubviews[0]
UIView.animate(withDuration: 0.25) {
firstView.isHidden = hidden
view.layoutIfNeeded()
} completion {
firstView.isHidden = hidden
}
}
关于ios - UIStackView 隐藏/取消隐藏排列的 subview 问题,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/50424480/
|