OGeek|极客世界-中国程序员成长平台

标题: ios - 使用自动布局调整 super View 和所有 super View 的 sibling 的大小 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 17:59
标题: ios - 使用自动布局调整 super View 和所有 super View 的 sibling 的大小

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

在我的 Controller View 中,我有两个 subview 。我们称它们为 view1 和 view2。 View1 有一个 uitextview subview ,它根据输入的文本而增长和缩小。

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

 ---------------------
|                     |
|  -----------------  |
| |   UITextView    | |
|  -----------------  |
|        view1        |
 ---------------------
|                     |
|                     |
|                     |
|                     |
|        view2        |
|                     |
|                     |
|                     |
|                     |
|                     |
 ---------------------

向 textView 添加文本时得到的结果是:

 ---------------------
|                     |
|  -----------------  |
| |   UITextView    | |
| |                 | |
| |                 | |
 ---------------------
|                     |
|                     |
|                     |
|                     |
|        view2        |
|                     |
|                     |
|                     |
|                     |
|                     |
 ---------------------

但理想的行为应该是这样的:

 ---------------------
|                     |
|  -----------------  |
| |   UITextView    | |
| |                 | |
| |                 | |
| |                 | |
| |                 | |
| |                 | |
|  -----------------  |
|        view1        |
 ---------------------
|                     |
|                     |
|        view2        |
|                     |
|                     |
|                     |
 ---------------------

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

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

任何帮助将不胜感激。



Best Answer-推荐答案


我设法弄清楚了。

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

更改 TextView 的高度时,只需触发委托(delegate)方法(例如 textViewDidChangeHeight。然后,在委托(delegate)回调实现中,我只是在 View 上调用了 sizeToFit。

关于ios - 使用自动布局调整 super View 和所有 super View 的 sibling 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21000482/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4