菜鸟教程小白 发表于 2022-12-12 10:15:12

ios - 以编程方式更新约束 iOS


                                            <p><p>我需要在我的项目中以编程方式<strong>更新约束</strong>,以相应地调整 View 的高度(基于不同的 subview )。我已经在我的 Controller 中消除了约束,但遇到了一个问题。</p>

<p>当我第一次尝试更新它时<em>(在 viewDidLoad 或 viewWillAppear</em> <em>方法</em>中),它没有更新。如果我之后更新它(因为一些旋转等),那么它是正确完成的。 <strong>请告诉我为什么会发生这种情况以及执行此操作的正确方法/地点是什么?</strong>(因为我觉得在 viewWillAppear/DidLoad 中更新后约束又在某处更新)。 </p>

<p>我也尝试了 <strong>view.layoutIfNeeded</strong>,但没有帮助。我猜它与 viewDidLoad 和其他 viewController 委托(delegate)方法有关 </p>

<p>附:我也在我的项目中使用 <em>size classes</em>,但我认为这与它无关,因为它在某些情况下有效。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>更新约束在 <code>viewWillAppear</code> 中可能不起作用。
但是,它可以在 <code>viewDidAppear</code> 中工作。</p>

<p>还有其他地方可以覆盖,比如:(第一次使用<code>static BOOL shouldRefreshView = NO;</code>)</p>

<pre class="lang-swift prettyprint-override"><code>- (void)viewDidLayoutSubviews
{
    ;
    if(shouldRefreshView) {
      shouldRefreshView = NO;
      ;
    }
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 以编程方式更新约束 iOS,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/34926436/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/34926436/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 以编程方式更新约束 iOS