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

ios - Xcode 6 - iOS8 - 自动布局如何正确设置约束优先级


                                            <p><p>我正在尝试使用自动布局来动态调整我的 UITableViewCell 高度。对于基本的单元格设计,比如在行中添加标签,我已经成功地实现了我想要的。但我不能让它为以下工作:</p>

<h2>设置</h2>

<ul>
<li>我正在使用面向 iOS8 及更高版本的 Swift 和 Xcode 6.4。</li>
<li>TableView 行高设置为 UITableViewAutomaticDimension。</li>
<li>TableView 的估计高度设置为 100,一般应该接近最终高度。</li>
<li>标题的垂直拥抱优先级设置为低 (250)。</li>
<li>没有改变其他元素的拥抱和压缩优先级。</li>
</ul>

<p>这是原型(prototype)单元:</p>

<p> <img src="/image/q6Q6k.png" alt="Prototype cell"/> </p>

<p>左边的图像有一个固定的高度。标题文本应该增长到适合完整的文本。这是一个行数设置为 0 的标签。副标题不应增长,因为它只会是短文本。</p>

<h2>我的约束设置</h2>

<ul>
<li>对于设置为 18 的图像前导和顶部约束。标题和副标题标签的尾随约束设置为 18。底部约束设置为 18,优先级低 (249)。</li>
<li>对于 superView 的标题标签顶部和尾随约束设置为 18。图像 18 的前导约束。副标题的底部约束为 0。</li>
<li>对于字幕标签,标题标签的顶部约束为 0。superview 的尾随空间为 18。图像的前导约束为 18。superview 的底部约束为 18,优先级低 (250)。</li>
</ul>

<h2>问题</h2>

<p>无论如何,我希望 superView 的底部空间为 18 个单位。这意味着,如果文本的(标题 + 副标题)高度小于图像的高度。图像的底部约束应确保 18 个单位的底部边距。如果标题高度增加,总文本高于图片,则字幕的底部约束应确保 18 个统一下边距,并且应忽略图片的底部约束。</p>

<p>我很感谢任何关于如何解决这个问题的建议,因为我正处于一个点,我只是在约束中输入一些随机值......</p>

<h2>更新</h2>

<p>请参阅标记的答案,了解如何设置约束以实现我需要的布局。如果您的单元格在 tableview 的第一次加载时布局不正确,请查看此问题以获得解决方法:<a href="https://stackoverflow.com/questions/27787552/ios-8-auto-height-cell-not-correct-height-at-first-load" rel="noreferrer noopener nofollow">iOS 8 Auto height cell not correct height at first load</a> </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>首先,UITableViewAutomaticDimension 尽管名称没有记录为自动 TableView 行高。只是不要像你一样实现 <code>heightForRowAtIndexPath</code> 并实现 <code>estimatedheightForRowAtIndexPath</code> 。</p>

<p>要解决布局问题,这不是优先级问题,而是您的约束问题。因为你的图像有一个固定的顶部和底部约束,所以单元格永远不会增长到大于图像 + 36pt。解决方案是让图像的顶部和底部约束 >= 而不是 =。</p>

<p>这样做之后,您可能会发现 IB 中有红色警告,表示不明确的约束。这是因为在大于或等于约束的情况下,布局无法确定 ImageView 的正确 Y 位置。解决方法:在 imageView 的 superview 约束中添加一个中心 Y。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - Xcode 6 - iOS8 - 自动布局如何正确设置约束优先级,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/31400751/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/31400751/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - Xcode 6 - iOS8 - 自动布局如何正确设置约束优先级