Размер представления контейнера не меняется при изменении ограничения высоты представления встроенного контроллера

У меня есть представление контейнера, которое встраивает другой контроллер представления в viewDidLoad. Когда я скрываю представление контроллера встроенного представления, представление контейнера сохраняется на экране. Представление встроенного контроллера имеет ограничение по высоте Greater or Equal, которое я установил на 0, когда скрываю представление.

Как скрыть представление контейнера, когда я скрываю представление встроенного контроллера?

РЕДАКТИРОВАТЬ:

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

Это работает, если я устанавливаю отношение ограничения высоты на Equal, оно перестает работать, если я изменяю отношение на Greater Than or Equal.

Иерархия представлений встроенного контроллера Иерархия представлений встроенного контроллера

Вот как выглядит контроллер представления с представлением контейнера —

Контроллер представления с представлением контейнера

Я хочу иметь возможность изменить ограничение высоты представления, встроенного в представление контейнера, и заставить представление контейнера соответствовать новой высоте (0 или 44, в зависимости от того, хочу ли я показать представление пользователю. Я принимаю это решение в viewWillAppear внутри файла .swift встроенного контроллера).

Это то, что я хочу видеть, когда я устанавливаю ограничение высоты на 0 -

Цель

Причина, по которой я хочу использовать отношение Greater Than or Equal для ограничения высоты, связана с доступностью. Я хочу, чтобы встроенное представление увеличивалось в размерах, когда пользователь увеличивает размер шрифта.


person nambatee    schedule 18.11.2017    source источник
comment
На самом деле, это нормально, что суперпредставление (контейнер, родитель) не скрывается, если какое-то его подпредставление (встроенное, дочернее) было скрыто.   -  person kirander    schedule 18.11.2017
comment
Если вы хотите скрыть родителя, вы можете вызвать self.superview.hidden = YES;   -  person kirander    schedule 18.11.2017
comment
@nambatee чего ты хочешь добиться?   -  person Vyacheslav    schedule 18.11.2017
comment
@Vyacheslav отредактировал исходный вопрос   -  person nambatee    schedule 19.11.2017


Ответы (1)


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

  1. Дайте ему вырожденное ограничение высоты. Похоже, вы делаете это. Вы вызываете layoutIfNeeded, чтобы принудительно пересчитать кадр?
  2. установите для свойства контейнера isHidden значение true
  3. установите для контейнера backgroundColor значение .clear

номер 3 самый простой.

person Josh Homann    schedule 18.11.2017