菜鸟教程小白 发表于 2022-12-12 16:48:14

ios - 无法在具有动态宽度的表格单元格中并排自动布局两个 UILabel


                                            <p><p>我有一个自定义单元格,需要并排布置两个 UILabel。两个标签的宽度都是动态的并且可以换行。 </p>

<p>我定义的自动布局在以下情况下会失败</p>

<ol>
<li>滚动单元格及其包含的部分,使其全部显示在屏幕上。</li>
<li>将设备旋转到横向(需要足够大的 View 以便 Cell 位于屏幕上)</li>
<li>向后旋转,左边的标签会被压缩。</li>
</ol>

<p>如果整个单元格和包含的部分在旋转之前不在屏幕上,则布局不会失败</p>

<p>这里是它工作和旋转后的几个屏幕截图</p>

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

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

<p>这是具有以下约束的布局</p>

<pre><code>this.ContentView.AddConstraint(
    NSLayoutConstraint.Create(
      this.TextLabel, NSLayoutAttribute.Left, NSLayoutRelation.Equal, this.ContentView, NSLayoutAttribute.Left,
      1.0f, (nfloat)LeftRightPadding));

this.ContentView.AddConstraint(
    NSLayoutConstraint.Create(
      this.TextLabel, NSLayoutAttribute.Top, NSLayoutRelation.Equal, this.ContentView, NSLayoutAttribute.Top,
      1.0f, (nfloat)TopAndBottomPadding));

this.ContentView.AddConstraint(
    NSLayoutConstraint.Create(
      this.TextLabel, NSLayoutAttribute.Bottom, NSLayoutRelation.Equal, this.ContentView, NSLayoutAttribute.Bottom,
      1.0f, 0 - (nfloat)TopAndBottomPadding));

this.ContentView.AddConstraint(
    NSLayoutConstraint.Create(
      this.DetailTextLabel, NSLayoutAttribute.Right, NSLayoutRelation.Equal, this.ContentView, NSLayoutAttribute.Right,
      1.0f, 0 - (nfloat)LeftRightPadding));

this.ContentView.AddConstraint(
    NSLayoutConstraint.Create(
      this.DetailTextLabel, NSLayoutAttribute.Top, NSLayoutRelation.Equal, this.ContentView, NSLayoutAttribute.Top,
      1.0f, (nfloat)TopAndBottomPadding));

this.ContentView.AddConstraint(
    NSLayoutConstraint.Create(
      this.DetailTextLabel, NSLayoutAttribute.Bottom, NSLayoutRelation.Equal, this.ContentView, NSLayoutAttribute.Bottom,
      1.0f, 0 - (nfloat)TopAndBottomPadding));

this.ContentView.AddConstraint(
    NSLayoutConstraint.Create(
    this.DetailTextLabel, NSLayoutAttribute.Left, NSLayoutRelation.Equal, this.TextLabel, NSLayoutAttribute.Right,
      1.0f,
      10));
</code></pre>

<p>如何阻止左侧标签的挤压?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>将 UILabel 的内容拥抱优先级提高到 750 以上。</p>

<p>最初,内容拥抱和内容压缩阻力优先级如下所示。</p>

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

<p>如下设置值</p>

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

<p>可以为这些设置任何值,但要根据您的优先级。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 无法在具有动态宽度的表格单元格中并排自动布局两个 UILabel,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/33211974/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/33211974/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 无法在具有动态宽度的表格单元格中并排自动布局两个 UILabel