Сменить ограничение по высоте программно

Я хочу изменить ограничение по высоте UITextView программно, поэтому я устанавливаю ограничение как выход в свой контроллер следующим образом:

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

Чтобы изменить его, я делаю следующее:

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

Это работает, если я делаю это в viewDidAppear, но проблема заключается в том, что я вижу, как изменяется высота после отображения представления, которое не очень удобно для пользователя, поэтому я попытался сделать это в viewWillAppear, но не работал там, высота не меняется. Вызов setNeedsUpdateConstraints после изменения ограничения тоже не работал.

Почему работает в viewDidAppear, а не в viewWillAppear? Любое обходное решение?

Спасибо заранее!

Ответ 1

Попробуйте вместо этого установить константу в viewDidLayoutSubviews.

Обратите внимание, что использование свойства текстового представления contentSize для установки высоты текстового вида не работает в iOS 7. См. fooobar.com/info/9122/...