菜鸟教程小白 发表于 2022-12-13 09:02:54

ios - 自动布局约束优先级未解决


                                            <p><p>我有一个 View ,它有一个 <strong>UILabel</strong>、一个 <strong>UITableView</strong>(<code>tblFilters</code>) 和一个 <strong>UIView</strong>(<code>btnBaseView</code>)(保留其他三个 UIButtons)。请查看下图:-
<img src="/image/QgsaR.png" alt="enter image description here"/> </p>

<p>我需要扩展 <code>tblFilters</code> 高度以展示每个类别的选项,但需要使 <code>btnBaseView</code> 始终在屏幕上可见。所以基本上 <code>tblFilters</code> 高度不应该超过限制。</p>

<p>为了实现这一点,我对 <code>btnBaseView</code> 应用了高度约束,并赋予它<strong>必需</strong>优先级。同样的方式 <code>tblFilters</code> 有一个高度限制,但有一个 <strong>DefaultHigh</strong> 优先级。</p>

<pre><code>// Height Constraint of btnBaseView. Height Should always be &gt;=116
btnSectionHeightConstraint = &#34; options:0 metrics:nil views:@{@&#34;btnBaseView&#34;:btnBaseView}];
[ setPriority:UILayoutPriorityRequired];
;


// TableView Height Constraint. Height value is being changed when user click on &#34;+&#34; button of table section.
tableHeightConstraints = &#34;,176.0] options:0 metrics:nil views:@{@&#34;tblFilters&#34;:tblFilters}];
[ setPriority:UILayoutPriorityDefaultLow];
;
</code></pre>

<p>但是这个方案似乎不起作用,因为 tableView 覆盖了整个 baseView 并将 <code>btnBaseView</code> 推出了可见区域。</p>

<p>我也尝试将 DefaultLow 的优先级保留为 <code>tblFilters</code>,但没有效果。当我在更改 <code>tblFilters</code> 高度约束后调试代码时,它会在控制台中打印正确的优先级输出,但对 View 没有影响。</p>

<p>有人可以帮我找出约束优先级没有按预期工作的问题,还是我对这个概念有错误的理解。任何帮助表示赞赏。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><ol>
<li>设置 <code>tblFilters</code> 高度约束优先级为
<code>UILayoutPriorityDefaultHigh</code></li>
<li>将 <code>tblFilters</code> 相关的 <code>btnBaseView</code> 上边距约束设置为
<code>0</code></li>
<li>设置 <code>btnBaseView</code> 与 <code>bottomView</code> 相关的下边距约束
为 <code>>= 0</code></li>
</ol>

<hr/>

<p>然后你改变 <code>tblFilters</code> 对应数据的高度约束</p>

<pre><code>tableHeightConstraints.constant = someValue
view.layoutIfNeeded()
</code></pre>

<p> <img src="/image/DJf3D.gif" alt="enter image description here"/> </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 自动布局约束优先级未解决,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/31426180/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/31426180/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 自动布局约束优先级未解决