Обновить автоматическое расположение при удалении вида

Я пытаюсь использовать Auto Layout для простого интерфейса.

Иногда, в зависимости от информации, полученной сервером, нам нужно удалить UIImageView (когда нет изображения для отображения).

Если я просто сделаю [image removeFromSuperview] тогда все под изображением применяет свои ограничения к вершине суперпредставления вместо метки "описание продавца".

Я пытался просто обновить кадр, но, видимо, это не разрешено. Я попытался ввести PIN-код описания продавца и VIP-скидок с другой меткой приоритета, но, по-видимому, эта опция пропала в новой версии Xcode.

1 ответ

Вы можете активировать и деактивировать ограничения в коде. Создайте в IB два ограничения: одно для макета с представлением изображения, а другое без него. Создать IBOutlet подключен к каждому ограничению. Снимите флажок "установлен" для того, что вы считаете не по умолчанию:

Конфигурация ограничений IB

При удалении вида изображения измените активные состояния ограничений соответствующим образом:

[imageViewPresentConstraint setActive:NO];
[imageViewAbsentConstraint setActive:YES];

Сделайте обратное, если изображение будет восстановлено. ВНИМАНИЕ! Во всех случаях обязательно отключайте систему, прежде чем активировать ее, чтобы избежать классического сообщения журнала о конфликтах.

Другие вопросы по тегам