web-dev-qa-db-ja.com

プログラムで高さの制約を変更する

UITextViewの高さの制約をプログラムで変更したいので、制約をコントローラーのアウトレットとして次のように設定します。

@property (strong, nonatomic) IBOutlet NSLayoutConstraint *descriptionHeightConstraint;

それを変更するには、次のようにします。

self.descriptionHeightConstraint.constant = self.description.contentSize.height;

これはviewDidAppearでそれを行うと機能しますが、これに関する問題は、ビューが表示された後に高さがどのように変化するかを見ることができることですviewWillAppearで試しましたが、そこでは動作しませんでした。高さは変わりません。制約の変更後にsetNeedsUpdateConstraintsを呼び出しても機能しませんでした。

ViewWillAppearではなくviewDidAppearで作業するのはなぜですか?回避策はありますか?

前もって感謝します!

30
mxch

代わりにviewDidLayoutSubviewsに定数を設定してみてください。

テキストビューのcontentSizeプロパティを使用してテキストビューの高さを設定することは、iOS 7では機能しないことに注意してください。 https://stackoverflow.com/a/18837714/123926 を参照してください。

27
bilobatum