AutoLayoutを使用してSuperViewとすべてのスーパービューの兄弟のサイズ変更
-
20-12-2019 - |
質問
入力されたテキストによって成長しているテキストビューに従ってすべてのビューが更新されるように、私の画面上のビューを管理しようとしています。
私のコントローラーのビューには、2つのサブビューがあります。 View1とView2を呼び出しましょう。 View1には、入力されたテキストによって成長し縮小しているUITExtViewサブビューがあります。
私が持っている問題は、そのView1とView2が成長して縮小しないであろうとしています。 TextViewの下からの垂直方向の間隔の制約定数は、それがスーパービューから10pxに設定されています。 View1とView2の間の垂直方向の間隔は0に設定されています。ここでは、ビューの視覚的表現です。
---------------------
| |
| ----------------- |
| | UITextView | |
| ----------------- |
| view1 |
---------------------
| |
| |
| |
| |
| view2 |
| |
| |
| |
| |
| |
---------------------
.
テキストをテキストに追加するのは、
になっている間に入っている結果です。 ---------------------
| |
| ----------------- |
| | UITextView | |
| | | |
| | | |
---------------------
| |
| |
| |
| |
| view2 |
| |
| |
| |
| |
| |
---------------------
.
しかし望ましい行動は、以下の行に沿ったものになるでしょう:
---------------------
| |
| ----------------- |
| | UITextView | |
| | | |
| | | |
| | | |
| | | |
| | | |
| ----------------- |
| view1 |
---------------------
| |
| |
| view2 |
| |
| |
| |
---------------------
.
奇妙なことは、テキストを追加して送信(簡単にするためにダイアグラムに追加されずに)を追加したら、View2と同様に、ビュー2は正しいサイズに成長しますが、入力している間は正しいサイズになります。
SetNeedSupDateConstraintsまたはUpdateConstraintSifneededを明示的に呼び出す必要がありますか?もしそうなら、どこに?テキストビューの委任TextViewDidChangeからそれを呼び出してみました:しかし何も役に立ちませんでした。
あらゆる助けが大いに評価されるでしょう。
解決
私はこれを理解することができました。
これを読んで同じ問題を読んで、私がそれを私自身のサブクラスを書くことは、高さ制約といくつかの委任状方法を与えることでした。
テキストビューの高さを変更するときは、単にデリゲート方式を発光してください(例えばTextViewDidChangeHeight :)。その後、デリゲートコールバック実装で、ビューでSizetoFitと呼ばれます。