2017-01-23 7 views
0

У меня есть UIView, в котором есть 4 компоненты, UITextField, а UIActivityIndicator и 2 UIButtons. Все компоненты используют ограничения, установленные с помощью раскадровки.быстрые ограничения обновления программно

Button1 UITextField UIActivityIndicator Button2

UITextField отображает URL из UIWebView и UIActivityIndicator соответствует загрузке страницы.

При загрузке страницы UIActivityIndicator скрыт.

То, что я хочу, что когда загрузка завершена и UIActivityIndicator скрыта, размер UITextField увеличивается и использовать пространство, используемое в UIActivityIndicator.

Button1 UITextField Button2

ответ

1

Вот что я хотел бы сделать:

Вместо того чтобы ограничение между текстовым полем и индикатором активности, использовать ограничение между текстовым полем и это SuperView, с добавлением дополнительной обивки чтобы освободить место для индикатора активности.

Управление-перетаскивание из ограничения в контроллер вашего вида, чтобы создать выход к нему.

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

Если вы хотите, чтобы текстовое поле оживляло его рост, поместите вызов layoutIfNeeded() при вызове UIView.animate(duration:animations:) сразу же после кода, изменяющего настройку ограничения. Это приведет к анимации макета.

+0

Работал как шарм !! –

+0

Требуется некоторое время, чтобы подумать о смене макета, подключив розетки к ограничениям, но это обычный способ работы в Auto-Layout. –