我正在尝试管理屏幕上的视图,以便根据输入的文本增长的文本视图更新所有视图。
在我的控制器视图中,我有两个子视图。我们称之为view1和view2。 View1有一个uitextview子视图,它根据输入的文本不断增长和缩小。
我遇到的问题是view1和view2在输入时不会增长和缩小。从textView的底部开始,垂直间距的约束常量已经从它的superview设置为10px。 view1和view2之间的垂直间距设置为0.以下是视图的直观表示:
---------------------
| |
| ----------------- |
| | UITextView | |
| ----------------- |
| view1 |
---------------------
| |
| |
| |
| |
| view2 |
| |
| |
| |
| |
| |
---------------------
我在textView中添加文本时得到的结果是:
---------------------
| |
| ----------------- |
| | UITextView | |
| | | |
| | | |
---------------------
| |
| |
| |
| |
| view2 |
| |
| |
| |
| |
| |
---------------------
但是,期望的行为将是:
---------------------
| |
| ----------------- |
| | UITextView | |
| | | |
| | | |
| | | |
| | | |
| | | |
| ----------------- |
| view1 |
---------------------
| |
| |
| view2 |
| |
| |
| |
---------------------
奇怪的是,一旦我添加了文本并按下了提交(为了简单起见未添加到图表中),view1增长到正确的大小,就像view2一样,但不是在输入时。
我是否需要显式调用setNeedsUpdateConstraints或updateConstraintsIfNeeded?如果是的话,在哪里?我试过从文本视图委托textViewDidChange调用它:但没有任何帮助。
非常感谢任何帮助。
答案 0 :(得分:1)
我设法解决了这个问题。
对于有同样问题阅读本文的人来说,我这样做的方法是编写自己的UITextView子类,给它一个高度约束和一些委托方法。
更改文本视图的高度时,只需触发委托方法(例如textViewDidChangeHeight :)即可。然后,在委托回调实现中,我只是在视图上调用了sizeToFit。