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 >=116
btnSectionHeightConstraint = " options:0 metrics:nil views:@{@"btnBaseView":btnBaseView}];
[ setPriority:UILayoutPriorityRequired];
;
// TableView Height Constraint. Height value is being changed when user click on "+" button of table section.
tableHeightConstraints = ",176.0] options:0 metrics:nil views:@{@"tblFilters":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]