菜鸟教程小白 发表于 2022-12-12 17:59:03

ios - 使用自动布局调整 super View 和所有 super View 的 sibling 的大小


                                            <p><p>我正在尝试管理屏幕上的 View ,以便所有 View 都根据 TextView 进行更新,该 TextView 根据输入的文本而增长。</p>

<p>在我的 ControllerView 中,我有两个 subview 。我们称它们为 view1 和 view2。 View1 有一个 uitextviewsubview ,它根据输入的文本而增长和缩小。</p>

<p>我遇到的问题是 view1 和 view2 在打字时不会增长和缩小。 textView 底部垂直间距的约束常数已设置为距其父 View10px。 view1 和 view2 之间的垂直间距设置为 0。这是 View 的可视化表示:</p>

<pre><code> ---------------------
|                     |
|-----------------|
| |   UITextView    | |
|-----------------|
|      view1      |
---------------------
|                     |
|                     |
|                     |
|                     |
|      view2      |
|                     |
|                     |
|                     |
|                     |
|                     |
---------------------
</code></pre>

<p>向 textView 添加文本时得到的结果是:</p>

<pre><code> ---------------------
|                     |
|-----------------|
| |   UITextView    | |
| |               | |
| |               | |
---------------------
|                     |
|                     |
|                     |
|                     |
|      view2      |
|                     |
|                     |
|                     |
|                     |
|                     |
---------------------
</code></pre>

<p>但理想的行为应该是这样的:</p>

<pre><code> ---------------------
|                     |
|-----------------|
| |   UITextView    | |
| |               | |
| |               | |
| |               | |
| |               | |
| |               | |
|-----------------|
|      view1      |
---------------------
|                     |
|                     |
|      view2      |
|                     |
|                     |
|                     |
---------------------
</code></pre>

<p>奇怪的是,一旦我添加了文本并按下了提交(为简单起见,没有添加到图表中),view1 会增长到正确的大小,view2 也是如此,但在输入时不会。</p>

<p>我是否需要显式调用 setNeedsUpdateConstraints 或 updateConstraintsIfNeeded?如果有,在哪里?我尝试从 TextView 委托(delegate) textViewDidChange: 调用它,但没有任何帮助。</p>

<p>任何帮助将不胜感激。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我设法弄清楚了。</p>

<p>对于任何阅读此问题的人来说,我这样做的方式是编写我自己的 UITextView 子类,为其提供高度约束和一些委托(delegate)方法。</p>

<p>更改 TextView 的高度时,只需触发委托(delegate)方法(例如 textViewDidChangeHeight:)。然后,在委托(delegate)回调实现中,我只是在 View 上调用了 sizeToFit。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用自动布局调整 superView 和所有 superView 的 sibling 的大小,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/21000482/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/21000482/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用自动布局调整 super View 和所有 super View 的 sibling 的大小