菜鸟教程小白 发表于 2022-12-13 15:36:06

ios - 无法满足约束时如何识别调试区域中的 View ?


                                            <p><p>我正在使用 <code>Autolayout</code> 并以编程方式设置约束,当我运行应用程序时,我遇到了一些无法满足约束的错误,例如:</p>

<pre><code>Will attempt to recover by breaking constraint
&lt;NSLayoutConstraint:0x798cd1c0 H:&gt;
</code></pre>

<p>我有几个像这样的 <code>UIImageView</code> 并且我发现很难知道是哪个使该约束被打破。无论如何要设置 View 的名称标签,以便在调试区域更好地识别它们? </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>Xcode 的自动布局提供了一个函数来将标识符设置为约束。使用此功能很容易找到不需要的约束。 </p>

<p><strong>要将标识符设置为约束,只需在 Storyboard 上选择约束,您会在尺寸检查器中弹出所选约束属性的提示,如下所示,</strong></p>

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

<p>出于演示目的,我设计了一个屏幕,其中三个 ImageView 垂直对齐,如下所示,</p>

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

<p>我已将每个 imageView 的固定宽度设置为 240 pts,并将LeadingSpace 和 TrailingSpace 设置为 40 pts,因此这会在这两个约束之间产生冲突。在将标识符设置为约束之前查看打破约束的日志,</p>

<pre><code>&#34;NSLayoutConstraint:0x7fbce9cb9180 H:&gt;&#34;,
&#34;&lt;NSLayoutConstraint:0x7fbce9cbe450 H:-(40)-|   (Names: &#39;|&#39;:UIView:0x7fbce9cb6320 )&#34;,

&#34;NSLayoutConstraint:0x7fbce9cbe4a0 H:|-(40)-   (Names: &#39;|&#39;:UIView:0x7fbce9cb6320 )&#34;,

&#34;NSLayoutConstraint:0x7fbce9c29b30 &#39;UIView-Encapsulated-Layout-Width&#39; H:&#34;
</code></pre>

<p>设置标识符后,</p>

<pre><code>&#34;NSLayoutConstraint:0x7ff7da44ba70
H:-(40)-|   (Names:
&#39;|&#39;:UIView:0x7ff7da448750 )&#34;,

&#34;NSLayoutConstraint:0x7ff7da44bac0 H:|-(40)-   (Names:
&#39;|&#39;:UIView:0x7ff7da448750 )&#34;,

&#34;NSLayoutConstraint:0x7ff7da447d30 &#39;RedImageViewWidth&#39; H:&#34;,

&#34;NSLayoutConstraint:0x7ff7da4206a0 &#39;UIView-Encapsulated-Layout-Width&#39; H:&#34;
</code></pre>

<p>读取约束中断日志的诀窍是读取数字,在上面你可以看到数字为“240”、“40”和“375”,并尝试找到具有相同常量值的约束在 Storyboard上,</p>

<p>在我的情况下,日志消息表明,SuperView 的前导和尾随空间为 40 pts,同时宽度为 240 pts,因此自动布局打破了这个宽度约束并将 375 pts 的宽度设置为根据屏幕大小,前导和尾随空间为 40 点。</p>

<p>希望这会对您有所帮助。 </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 无法满足约束时如何识别调试区域中的 View ?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/36253090/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/36253090/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 无法满足约束时如何识别调试区域中的 View ?