我正在尝试管理屏幕上的 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-推荐答案 strong>
我设法弄清楚了。
对于任何阅读此问题的人来说,我这样做的方式是编写我自己的 UITextView 子类,为其提供高度约束和一些委托(delegate)方法。
更改 TextView 的高度时,只需触发委托(delegate)方法(例如 textViewDidChangeHeight。然后,在委托(delegate)回调实现中,我只是在 View 上调用了 sizeToFit。
关于ios - 使用自动布局调整 super View 和所有 super View 的 sibling 的大小,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/21000482/
|