菜鸟教程小白 发表于 2022-12-11 20:10:43

ios - UIStackView 隐藏/取消隐藏排列的 subview 问题


                                            <p><p>我正在根据在 Segment Control 中点击的 Segment 隐藏和取消隐藏 dropDownView(由文本字段和按钮组成的 UIView)。以下是 View 层次结构:-</p>

<p> <a href="/image/NSK0y.png" rel="noreferrer noopener nofollow"><img src="/image/NSK0y.png" alt="enter image description here"/></a> </p>

<p>以下是隐藏/取消隐藏 dropDownView 的代码:- </p>

<pre><code> private func animateView(view: UIStackView, toHidden hidden: Bool) {
    UIView.animate(withDuration: 0.25)
    {
    let firstView = view.arrangedSubviews
    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
      }
    }
</code></pre>

<p>我面临的问题是在更改段超过 10-15 次后,上述代码停止工作并且 DropDown View 与段控制重叠,我不知道为什么。任何有助于理解此问题的帮助表示赞赏。</p>

<p>我也试过了<br/>
<强> 1。设置需求布局,<br/>
2.设置NeedsDisplay和<br/>
3.将dropDownView的高度限制优先级从999降低
    1000</strong></p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>似乎在 completionClosure 中的附加设置 isHidden 修复了该问题(Swift 5 语法):</p>
<pre><code>private func animateView(view: UIStackView, toHidden hidden: Bool) {
    let firstView = view.arrangedSubviews
    UIView.animate(withDuration: 0.25) {
      firstView.isHidden = hidden
      view.layoutIfNeeded()
    } completion {
      firstView.isHidden = hidden
    }
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - UIStackView 隐藏/取消隐藏排列的 subview 问题,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/50424480/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/50424480/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - UIStackView 隐藏/取消隐藏排列的 subview 问题